【问题标题】:remove hyphen in bash prompt删除 bash 提示符中的连字符
【发布时间】:2019-08-08 18:53:51
【问题描述】:

我的bash PS1提示配置为:

export PS1="\e[1;38;5;120m\\n\s \V\\$ \e[0m"

看起来像

-bash 5.0.7$

bash 前面加上连字符- 很烦人。有谁知道我怎样才能摆脱它?

【问题讨论】:

  • 不要使用 bash 作为登录 shell 以避免领先 -
  • 无需导出PS1。把它放在.bashrc,每个交互式shell都会根据需要定义它,而不是从父进程继承。

标签: bash prompt


【解决方案1】:

之所以出现-,是因为login 程序运行您的默认shell,前缀为-,表示应使用登录shell(相当于bash -l)。

\s 本质上只是basename "$0" 的同义词。如果您一开始就无法轻松更改 shell 的运行方式,则可以修改提示以从 $0 中删除 -

PS1="\e[1;38;5;120m\\n${0#-} \V\\$ \e[0m"

(除非您另有说明,否则我假设不需要对 $0 进行其他处理。)

【讨论】:

    【解决方案2】:

    也许不完全是您的想法,但将 \s 替换为文字文本 bash 会做到这一点:

    export PS1="\e[1;38;5;120m\\nbash \V\\$ \e[0m"

    这样设置提示对其他 shell 无论如何都不起作用。

    【讨论】:

    • 如何确保设置提示符适用于其他 shell?
    • @flashburn 具体是哪些壳?
    • @flashburn 这取决于外壳,因为它们配置的提示不同。 /bin/sh 将使用 PS1,但不支持 bash 转义序列。
    • Bourne 风格的 shell 在如何预处理 PS1 的值方面存在很大差异。 POSIX 规范只列出了两个特殊的可扩展项:! 替换为当前历史编号,!! 是文字 !kshdash 坚持下去; zsh 有一个很大但与bash 完全不同的列表(它们都以% 为前缀,而不是反斜杠)。客户提示是一个非常特定于 shell 的功能。
    • 注意色码不是特殊的提示功能;这些只是终端处理的 ANSI 转义码,不管是什么产生的。
    猜你喜欢
    • 2012-04-27
    • 2011-08-08
    • 2018-07-03
    • 2011-08-21
    • 2021-06-26
    • 2018-05-04
    • 1970-01-01
    • 2012-04-26
    • 2017-11-04
    相关资源
    最近更新 更多