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

Jir*_*rka 14 unix bash command-line

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

我目前的 PS1 字符串:

PS1="\h:\w\n$"
Run Code Online (Sandbox Code Playgroud)

提示如下所示:

lnx-hladky:/tmp/plugtmp
$
Run Code Online (Sandbox Code Playgroud)

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

它会导致问题,例如:

lnx-hladky:~/DOC
$  
Run Code Online (Sandbox Code Playgroud)

文档说:

\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
Run Code Online (Sandbox Code Playgroud)

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

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

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

谁能提出更好的解决方案?我有一种感觉,为了获得提示而运行这么多命令不太好。(日期,whoami,主机名,密码)。

Ign*_*ams 13

bash 在提示符中运行扩展;只要确保逃脱他们。

PS1='\h:$(pwd)\n$'
Run Code Online (Sandbox Code Playgroud)

  • @Jirka:您也可以使用:`PS1='\h:$PWD\n$'。 (2认同)
  • `pwd` 是一个内置的 bash。断言`${PWD}`比`$(pwd)`“便宜得多”是没有证据的。 (2认同)
  • @anxieux:你必须用单引号引用,而不是双引号 (2认同)