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

时间:2016-06-07 15:21:16

标签: linux bash shell command prompt

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

#!/bin/bash

PS1='\u:\W\$ '

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

如何在bash中实现与直接输入相同的结果?

提前谢谢

1 个答案:

答案 0 :(得分:2)

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

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

# in bash
source yourscript

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

在这种用法中,shebang什么都不做;同样,也不需要+x权限。将脚本命名为源而非执行的脚本也是典型的,其扩展映射到它们(yourscript.bash用于bash,yourscript.sh用于shell的扩展映射。可以由任何POSIX shell提供的脚本),而打算执行而不是源代码的脚本应该没有扩展名。