Bash:如何永久更改命令提示符,直到我想再次更改提示符?

Bash:如何永久更改命令提示符,直到我想再次更改提示符?

我想要两个命令 - 第一个命令将提示符缩短为$␣or #␣。这在当前 shell 中应该是永久的,直到我发出命令long_prompt将提示重置为默认版本。

这是short_prompt命令脚本:

if [ $(id -u) = 0 ]; then
   PS1='\[\033[01;34m\]#\[\033[00m\] '
else
   PS1='\[\033[01;34m\]\$\[\033[00m\] '
fi

(如您所见,我尊重管理 shell 和用户 shell 的不同提示)
当我像这样获取此脚本时:

$ . short_prompt

一切都按预期工作,但为此我必须位于所在目录short_prompt或给出整个路径名,如下所示:

$ . /data/system/bin/short_prompt

我似乎无法弄清楚如何使该命令可以从任何地方访问(例如通过创建到路径目录之一的软链接,例如/usr/local/bin)并输入

$ short_prompt

或者

$ long_prompt

export我尝试在两行前面添加PS1='...',但这也不起作用。

答案1

影响正在运行的 shell 的 PS1 的唯一方法是获取代码。

有很多方法可以解决这个问题。

  1. 将一个脚本放在 /home/user/bin 中

    命名一个脚本short_prompt使其可执行并将其放置在/home/user/bin.

    #!/bin/bash
    . /data/system/bin/short_prompt
    

    如果这样做,执行过程很简单:

    $ 短提示

  2. 起一个别名

    $ alias short_prompt='. /data/system/bin/short_prompt'
    

    执行为:

    $ short_prompt
    
  3. 使用~/.bashrc

    将代码作为函数放在“~/.bashrc”中:

    short_prompt(){
        PS1='\[\033[01;34m\]\$\[\033[00m\] '
    }
    

    调用方式为:

     $ short_prompt
    

答案2

将脚本放在您的 目录中PATH,Bashsource使用它来查找要源的脚本。这可以改变shopt sourcepath但默认情况下它是打开的。

另一种选择是创建一个别名或函数,从脚本所在的路径获取脚本,甚至将整个提示分配放入函数中。这还有一个优点,即您不需要显式使用.source调用脚本。

顺便说一句,如果您是 root,则\$扩展为#root,因此无需为此为 root 设置单独的路径。

分配的作用export是使环境变量对您可能在当前 shell 下启动的任何其他 shell 可见。尽管PS1存在非交互式 shell 会清除它的问题,所以它通常会在.bashrc.

相关内容