如何从bash $ PS1设置变量

卡米洛·马丁(Camilo Martin)

bashPS1变量似乎可以访问所有shell变量。

$ foo=bar
$ PS1='$foo '
bar # Works as expected.

但是,在那里设置变量无效。

$ PS1='$(bar=baz)\$ '
$ echo $bar

$ # Does not work.

为什么,以及如何使这项工作?

卡米洛·马丁(Camilo Martin)

为什么:

PS1变量作为字符串求值。在bash字符串中,您可以执行以下操作:

$ myString="$foo"

和这个:

$ myString="Date: $(date)"

但这不是:

$ myString="$(foo=bar)"

PS1变量完全不受此规则约束。

注意:正如mkelement0在注释中解释的那样,这是因为该foo=bar部分将在子shell中执行,所以您可以这样做$(foo=bar;echo $foo)-只是变量仅存在于该作用域中。

如何进行这项工作:

还有另一个变量,称为PROMPT_COMMANDeval()在评估PS1变量之前,在每个提示字符串中添加此处的代码

因此,即使只按原样在此处编写作业也可以:

$ PROMPT_COMMAND='bar=baz'
$ echo $bar
baz # Works!

不过,请记住要检查您是否没有覆盖PROMPT_COMMAND可能要保留的内容

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从bash $ PS1设置变量

来自分类Dev

在bash PS1中设置变量

来自分类Dev

bash PS1设置

来自分类Dev

Bash PS1不评估变量

来自分类Dev

bash $ PS1变量中的参数

来自分类Dev

如何在PS1变量中插入bash脚本

来自分类Dev

如何使用Dockerfile设置$ PS1?

来自分类Dev

导出或不导出bash PS1变量

来自分类Dev

为什么bash的提示变量称为PS1?

来自分类Dev

如何根据所在目录设置不同的.bashrc PS1?

来自分类Dev

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

来自分类Dev

如何通过golang获取环境变量PS1?

来自分类Dev

如何设置使git和conda都能在bash中显示的PS1?

来自分类Dev

Bash + Korn的PS1

来自分类Dev

如何修改cygwin的PS1以完成git bash?

来自分类Dev

为什么手动设置bash提示(PS1)会导致root使用$而不是#?

来自分类Dev

Bash:PS1 vs Prompt 命令来设置提示和标题

来自分类Dev

更新bash函数中的变量并在提示符(PS1)中使用它

来自分类Dev

Bash $ PS1麻烦(ubuntu)

来自分类Dev

bash PS1 256色加粗

来自分类Dev

在bash函数中生成PS1

来自分类Dev

如何在PS1环境变量中转义感叹号?

来自分类Dev

BASH:如何将退出代码保存在PS1中以便以后在PS1中使用?

来自分类Dev

如何返回默认的PS1提示?

来自分类Dev

自定义Bash提示(也称为PS1环境变量)的最佳实践是什么?

来自分类Dev

标题的PS1如何不覆盖提示的PS1

来自分类Dev

如何从另一个.ps1文件执行.ps1?

来自分类Dev

如何停止bash shell PS1颜色在命令结束时停止?

来自分类Dev

如何停止bash shell PS1颜色在命令结束时停止?