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

时间:2016-02-11 05:16:38

标签: bash unix console ps1

我已经搜索了很长一段时间,但是无法找到关于在bash中添加PS1内变量(即更改)变量的帖子或任何信息,每次都会更新发生新提示。在concreto中,我希望提示的宽度跨越整个终端窗口,例如:

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))) \w\n\$'

每当我

时,它都能很好地发挥作用
exec bash

重置提示。

但是,如果没有我重新加载bash,我希望它可以工作。肯定有一种方法可以做到这一点,因为\ W,\ W和喜欢的东西也是唯一的,并且每个提示都会更新。有什么办法容易做到这一点? 谢谢!

7zS2

1 个答案:

答案 0 :(得分:0)

试试这个。将您的代码放入一个文件中,我在我的主目录中将其称为gash.sh,只需稍加修改:将PS1赋值替换为echo,并将单引号替换为double。

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

然后在你的启动文件集PS1中:

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