如何在 Linux 的 sh(不是 bash)的命令提示符中显示当前路径?

如何在 Linux 的 sh(不是 bash)的命令提示符中显示当前路径?

我想在 sh 提示符(而不是 bash shell)中显示当前路径,它目前只显示“#”,我尝试引入这个

env PS1="$(whoami)@$(hostname):$(pwd)"

set PS1="$(whoami)@$(hostname):$(pwd)"

/etc/profile

但很明显,当目录更改或用户更改时,这不会刷新。请提出一种使其动态化的方法。

答案1

双引号中的命令替换"会立即展开。这不是您想要的提示。单引号'将保留替换,$PS1然后仅在显示提示时展开。因此这应该有效:

PS1='$(whoami)@$(hostname):$(pwd)'

如果您希望在提示符末尾使用通常的美元符号和空格,只需$在末尾添加(无需转义):PS1='$(whoami)@$(hostname):$(pwd)$ '

答案2

sh-4.2$ export PS1="\u@\h:\w>"
jenny@serenity:~>cd /usr/local
jenny@serenity:/usr/local>

答案3

此命令对我有用。

export PS1="\u@\h: \W:$"

在哪里
\u = 用户名
\h = 主机名
\W 当前文件夹的名称(非完整路径)

答案4

一个答案是使用单引号而不是双引号,但这并不是完全正确的答案。您真正想要做的是推迟对提示内的代码的评估,直到使用提示为止。

set PS1="$(pwd)" 

将提示设置为 set 命令的工作目录。

set PS1="\$(pwd)" 

不会扩展 $(pwd)。相反,PS1 被设置为 $(pwd) 的文字值。

通过运行来测试/理解这一点:

echo $PS1

。如果您看到字符串:$pwd,则提示有效。如果您看到文字路径,则提示已损坏,因为它已被静态设置

相关内容