我想要两个命令 - 第一个命令将提示符缩短为$␣
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 的唯一方法是获取代码。
有很多方法可以解决这个问题。
将一个脚本放在 /home/user/bin 中
命名一个脚本
short_prompt
使其可执行并将其放置在/home/user/bin
.#!/bin/bash . /data/system/bin/short_prompt
如果这样做,执行过程很简单:
$ 短提示
起一个别名
$ alias short_prompt='. /data/system/bin/short_prompt'
执行为:
$ short_prompt
使用
~/.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
.