通过自己的脚本临时更改 bash 提示符



我想写一个小的shell脚本,当它变得太长时缩短逗号提示。在 bash 中设置 PS1 变量工作正常。当我直接在脚本中尝试相同的命令并运行它时,没有任何反应。

#!/bin/bash
PS1='u:W$ '

我尝试了eval "PS1='u:W$ '"export PS1='u:W$ 'exec PS1='u:W$ '没有任何结果。

我怎样才能获得与 bash 中的直接输入相同的结果?

提前谢谢你

通常,在 UNIX 中,进程只能更改自身及其子进程的变量,而不能更改其父进程("其父进程"是调用它的进程)。

你需要获取一个脚本,而不是执行它,以便它能够影响你的交互式 shell 的变量。这将执行当前 shell 内脚本内的所有命令,而不是作为子进程启动的新 shell(其变量的值在退出时被丢弃)。

# in bash
source yourscript
# or in POSIX sh
. yourscript # mind the space!

在这种用法中,shebang 什么都不做;同样,也不需要+x权限。通常还命名要获取而不是执行的脚本,并映射到它们打算使用的 shell(yourscript.bash 表示 bash,yourscript.sh用于可由任何 POSIX shell 获取的脚本),而打算执行而不是源的脚本应该没有扩展名。

相关内容

  • 没有找到相关文章

最新更新