Bash PS1和单引号与双引号

掷石

我是linux和Bash新手,希望在分配PS1 env var时要求帮助了解单引号和双引号的作用。我想将终端设置为始终显示当前目录。一开始我尝试了这个:

export PS1="\[\e[38;5;46m\]>\[\e[38;5;255m\]\[\e]0;$(pwd)\007\]"

这会导致终端标题更新,当我按Enter键时显示当前目录如果后来我将其cd到其他地方则不会显示

通过漫无目的地的反复试验,我最终尝试了:

export PS1='\[\e[38;5;46m\]>\[\e[38;5;255m\]\[\e]0;$(pwd)\007\]'

第二个版本使用单引号引起了我所希望的效果:每次我将目录cd到新目录时,终端标题都会更新。

有人可以解释为什么单引号和双引号的用法会有所不同吗?谢谢你。

我发现了以下讨论:如何更改薄荷窗口的标题?但是OP似乎没有标记答案,而我从该链接尝试的那些答案似乎在我的shell中没有任何作用。

不是

单引号和双引号之间的区别是插值。

在第一个示例中,外壳程序在将表达式分配给PS1变量之前在双引号之间插入表达式,因此,在插值之后,变量的值将为

> /home/user

在第二个示例中,由于单引号,shell将字面意义上的表达式分配给变量,这导致了预期的行为(每次打印提示时,bash都会根据当前目录对表达式进行插值)。PS1的值为:

\[\e[38;5;46m\]>\[\e[38;5;255m\]\[\e]0;$(pwd)\007\]

您可以使用以下几个命令轻松地检查这一点:

$ a='hello'
$ b="${a} world"
$ c='${a} world'

$ echo $b
hello world
$ echo $c
${a} world

在中$b,变量a被插值到字符串中,但$c不是在内,因此按字面意义打印字符串。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

bash:通过grep匹配单引号和双引号

来自分类Dev

bash:通过grep匹配单引号和双引号

来自分类Dev

bash:通过grep匹配单引号和双引号

来自分类Dev

单引号和双引号是由“ bash”还是“ echo”处理的?

来自分类Dev

在Bash中在双引号和单引号中使用反引号的区别

来自分类Dev

单引号和双引号中的PS1变量-bashrc

来自分类Dev

双引号内的单引号和Bash参考手册

来自分类Dev

bash中单引号$'string'和双引号$“ string”有什么区别?

来自分类Dev

Bash脚本,带有带单引号和双引号的命令

来自分类Dev

bash脚本执行命令带有双引号,单引号和空格

来自分类Dev

双引号内的单引号和Bash参考手册

来自分类Dev

bash中单引号$'string'和双引号$“ string”有什么区别?

来自分类Dev

在 bash 脚本中使用双引号和单引号来调用程序

来自分类Dev

如何执行具有很多嵌套单引号和双引号以及bash中带引号的变量的命令

来自分类Dev

Bash脚本双引号

来自分类Dev

Bash脚本双引号

来自分类Dev

bash中的双引号

来自分类Dev

如何在bash脚本中转义双引号字符串中的单引号?

来自分类Dev

Bash中的单引号条目

来自分类Dev

bash中的引号内的双引号

来自分类Dev

bash变量带双引号

来自分类Dev

在Bash中对数组进行双引号和不双引号有什么区别?

来自分类Dev

bash脚本单引号和反斜杠创建

来自分类Dev

bash和算术比较:是否使用双引号?

来自分类Dev

在bash和qmake中转义变量的双引号

来自分类Dev

Mac .bash_profile双引号(直写和大写)

来自分类Dev

如何用单引号定义此PS1变量?

来自分类Dev

Bash:在同一行中的双引号之后,单引号内的历史记录扩展

来自分类Dev

psycopg,双引号和单引号插入

Related 相关文章

热门标签

归档