如何避免 Bash 提示符中的波浪符号 ~ ?

如何避免 Bash 提示符中的波浪符号 ~ ?

我想删除 PS1 变量中显示的波浪号。

我当前的 PS1 字符串:

PS1="\h:\w\n$"

提示如下:

lnx-hladky:/tmp/plugtmp
$

我不喜欢 $HOME 目录显示为波浪符号。可以避免这种情况吗?

它会导致问题,例如:

lnx-hladky:~/DOC
$  

文档说:

\w : the current working directory, with $HOME abbreviated with a tilde 
\W: the basename of the current working directory, with $HOME abbreviated with a tilde

有没有可能避免 $HOME 被用波浪号缩写?

我找到了一种解决方法,但我觉得它过于复杂:

PROMPT_COMMAND='echo -ne "\e[4;35m$(date +%T)\e[24m$(whoami)@$(hostname):$(pwd)\e[m\n"'
PS1=$

有人能提出更好的解决方案吗?我觉得运行这么多命令只是为了得到提示不太好。(date、whoami、hostname、pwd)。

答案1

bash 在提示中运行扩展;只需确保将其转义。

PS1='\h:$(pwd)\n$'

答案2

您不需要运行示例中显示的那么多命令。bash为您提到的大多数内容提供快捷方式。

你的例子:

PROMPT_COMMAND='echo -ne "\e[4;35m$(date +%T)\e[24m$(whoami)@$(hostname):$(pwd)\e[m\n"'
PS1=$

可以重写为:

PS1='\e[4;35m\t\e[24m\u@\h:\w\e[m\n'

其中\t显示时间(24 小时格式),\u显示当前用户名,'\h' 显示主机名 - 手册bash页讨论这些和其他可用的逃生方式感谢您的提示。

即使您将扩展~为完整路径,如果您不知道哪个用户正在运行该命令并且您定期切换用户,则可能会产生文件权限或可执行权限问题。

答案3

我在 .bash_profile 文件中使用以下设置

$ export PS1='\e[1;34m\D{%T %d.%m.%Y} \[\033[00;39m\]\u\[\033[00;32m\]@$IP:\[\033[00;33m\]$(pwd)/\n\\$\[\033[00m\] '

21:40:08 14.12.2017 [email protected]:/home/vmware/Downloads/

相关内容