我正在尝试自定义我的 bash 提示符。如果我输入一个不存在的命令,或者由于其他原因失败,我希望它改变颜色。我对 bash 脚本的编码相当陌生,所以我查看了其他一些脚本以便获得一些帮助,但有些东西不起作用。这是我的代码:
export PROMPT_COMMAND="
PS1='`
if [ $? -eq 0 ];
then echo '
\[\033[00;32m\]┌─\[\033[00;35m\]\u\[\033[01;32m\]@
\[\033[00;35m\]\h\n\[\033[00;32m\]└─\[\033[01;32m\]
(\[\033[01;35m\]\W\[\033[01;32m\])\[\033[00;32m\]\$';
else echo '
\[\033[00;31m\]┌─\[\033[00;35m\]\u\[\033[01;31m\]@
\[\033[00;35m\]\h\n\[\033[00;31m\]└─\[\033[01;31m\]
(\[\033[35m\]\W\[\033[31m\])\[\033[00;31m\]\$';
fi`\[\033[0m\]'"
我在实际代码中没有任何换行符,因为这会对 PS1 造成混乱,我只是添加了它们以使代码更易于阅读。
所以,我想比较一下退出状态,$? , 为0。出于某种原因,变量 $? 在脚本中根本没有改变。它只是保持0,因此第一个条件始终为真,即使我发出错误的命令也是如此。我试过添加echo $? 到 if-case 之前的代码,这总是返回 0,即使发出echo $? 作为终端的命令返回不同的东西。我试过将工作代码复制到我的,但这也不能解决它。此外,当我使用'作为外部引用和"作为第二个引用时,它起作用了。我改变了这个,因为脚本不会接受(否则作为一个字符。
任何想法为什么会这样以及如何解决它?