【问题标题】:Changing bash prompt in new bash在新 bash 中更改 bash 提示符
【发布时间】:2012-04-28 01:08:29
【问题描述】:

当我创建一个新的 bash 进程时,提示默认为一个非常简单的提示。 我知道我可以编辑 .bashrc 等来更改它,但是有没有办法通过 bash 命令传递提示?

谢谢!

【问题讨论】:

标签: bash shell prompt


【解决方案1】:

您可以设置一个环境变量,然后在 .bashrc 中的提示符中使用该环境变量。

【讨论】:

    【解决方案2】:

    提示由 PS1、PS2、PS3 和 PS4 环境变量定义。所以,例如以下将启动一个新的 bash,提示设置为“foo:”:

    PS1="foo: " bash --norc
    

    需要--norc 来抑制初始化文件的处理,这将覆盖PS1 变量。

    【讨论】:

    • +1 如果你在 .bash_profile 而不是 .bashrc 中定义 PS1,你甚至不需要“--norc”选项。
    • 谢谢! @glennjackman:我不想在每个 shell 中都使用它,我想要一个可以调用的测试环境。当我在这个测试环境中时,提示应该表明这一点。
    • 如果您有类似 git 感知提示,您还需要确保 PROMPT_COMMAND 为空。
    【解决方案3】:

    我有同样的问题 - 我想从命令行启动一个临时 bash;而大多数其他环境变量仍然存在;那些来自~/.bashrc 的东西很难被覆盖——尤其是如果你像我一样,真的想保留你已经拥有的~/.bashrc(以及里面的别名等)——除了PS1 提示.

    这对我有用(注意--init-file--rcfile 的同义词/别名):

    bash --rcfile <(cat ~/.bashrc ; echo 'PS1="\[\033[0;33m\]\u@HELLO:\W\$\[\033[00m\] "')
    

    基本上,括号/小于+括号习语&lt;()启动bash进程替换;在括号内回显到标准输出的所有内容都将在一个临时文件中结束,/dev/fd/&lt;n&gt;。所以我们先cat出来~/.bashrc的内容;然后我们只需在末尾添加一个PS1 set 命令,(它有效地覆盖) - 这最终在/dev/fd/&lt;n&gt;;然后bash 使用/dev/fd/&lt;n&gt; 作为新的rcfile

    这是它的行为方式:

    user@pc:tmp$ TESTVAR="testing" bash --rcfile <(cat ~/.bashrc ; echo 'PS1="\[\033[0;33m\]\u@HELLO:\W\$\[\033[00m\] "')
    user@HELLO:tmp$ test-alias-tab-completion ^C
    user@HELLO:tmp$ echo $TESTVAR 
    testing
    user@HELLO:tmp$ exit
    exit
    user@pc:tmp$ 
    

    【讨论】:

      猜你喜欢
      • 2012-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      • 1970-01-01
      相关资源
      最近更新 更多