如何在 bash 脚本中使用源来更改终端提示符?

如何在 bash 脚本中使用源来更改终端提示符?

我需要能够使用 ~/.local/bin/($PATH 的一部分)中的脚本来快速更改提示。

通过在控制台中运行以下命令可以实现所需的结果:

 echo PS1='$\ ' > /tmp/ps1 && source /tmp/ps1 && rm /tmp/ps1

但是,当放入脚本中时,它将不再影响运行它的控制台。

. .local/bin/bigfont有效,但应避免写入脚本的路径(或写入脚本名称以外的任何内容)。

有没有办法使用脚本来做到这一点?如果没有,有没有一种使用 C 的简单方法来解决这个问题?

谢谢!

答案1

有一个折衷方案,它会让它看起来好像你正在使用脚本。

编写一个 Bash 函数:

function miniprompt {
  PS1='$ '
  ~/.local/bin/somescript # or just somescript if it's in $PATH
}

为了确保该功能始终可用,请将其放入~/.bashrcand中~/.bash_profile(或者只要~/.bashrc它被加载~/.bash_profile即可)。

garyjohn 明确指出,该问题包含一个source必须使用的错误假设,并澄清说,可以PS1='$ '直接设置。谢谢!

答案2

function myprompt {
  export PS1=<set PS1 appropriately>
}

alias setprompt="PROMPT_COMMAND='myprompt'"

运行 setprompt 应该会设置您的提示。

答案3

您可以做类似的事情...

export PS1="newprompt> "
exec bash

它可以起作用..但是它会用一个新的 bash shell 和一个新的环境替换您当前的 bash shell。

相关内容