Bash:如何在PS1中设置更改变量,更新每个提示



我已经搜索了一段时间,但找不到有关在 PS1 中添加变量的帖子或任何信息,该变量在 bash 中是变量(即更改),每次出现新提示时都会更新。具体来说,我希望提示的宽度跨越整个终端窗口,例如:

7zS2::awesome| --------------------------------------------------------- ~/.config/awesome

这是我到目前为止所拥有的,省略了颜色代码以提高易读性:

mytest=$PWD
mynext="$(basename $PWD)"
mylength=$((${#mytest}+${#mynext}))
length=$(($mylength+6))
PS1='7zS2::W| $(printf "\u2500%.0s" $(seq $length $(tput cols))) wn$'

每当我

exec bash

以重置提示。

但是,我希望它无需重新加载 bash 即可工作。当然,必须有一种方法可以做到这一点,因为\w,\W等都是唯一的,并且每个提示都会更新。有什么方法可以轻松做到这一点吗?谢谢!

7zS2

试试这个。 将您的代码放入一个文件中,我在我的主目录中gash.sh调用它,稍作修改:将 PS1 分配替换为 echo ,并将单引号替换为双引号。

mytest=$PWD
mynext="$(basename $PWD)"
mylength=$((${#mytest}+${#mynext}))
length=$(($mylength+6))
echo "7zS2::W| $(printf \u2500%.0s $(seq $length $(tput cols))) wn$"

然后在启动文件集 PS1 中:

PS1='$(~/gash.sh)'

最新更新