提示自定义不适用于ksh

时间:2017-06-16 14:44:30

标签: bash sh zsh ksh prompt

我已按照以下方式自定义提示:

PS1="\e[0;34m\u\e[m@\e[0;31m\h\e[m: \e[0;33m${PWD##*/}\e[m$: "

这是显示结果的图像:

Here is an image showing the result

我对它很满意并且它与sh,bash和zsh一样有效。但是,一旦切换到" ksh"它给了我这个提示:

e[0;34mue[m@e[0;31mhe[m: e[0;33ma922100e[m$: 

无论我运行的是什么shell,如何让格式化工作"全局"?

1 个答案:

答案 0 :(得分:0)

由于在初始化PS1时扩展了双引号内的${PWD##*/},因此在更改目录时您的提示未被更新。

有很多方法可以解决它,根据ksh版本可能会有以下工作。

csi=$'\e['
# or 
# csi=$(printf '\e[')
PS1="${csi}0;34m$(whoami)${csi}m@${csi}31m$(hostname)${csi}m: ${csi}33m"'${PWD##*/}'"${csi}m$: "