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


43

我想在sh提示符(不是bash shell)中显示当前路径,当前仅显示“#”,我尝试介绍一下

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

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

在中/etc/profile

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


1
请注意,每个$()程序都运行一个单独的程序;这将是更快地使用环境变量,例如$LOGNAME$HOSTNAME$PWD代替。
grawity

一种答案是使用单引号而不是双引号,但这是完全正确的答案。您真正想做的是推迟对提示中的代码进行评估,直到使用提示为止。
MaasSql 2014年

所有你需要的是利用出口“PS1 =” $(WHOAMI)@ $(主机名):$(PWD)>”,然后编辑/ etc / profile文件,并追加这一行的末尾。
SDsolar

Answers:


76

双引号中的命令替换"将立即扩展。那不是您想要的提示。单引号'将保留替换$PS1,然后仅在显示提示时对其进行扩展。因此,这应该工作:

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

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


1
在将答案中的“设置”更改为“导出”后,export PS1='$(whoami)@$(hostname):$(pwd)$'我像魅力一样工作, 将更改保存到/etc/profile。谢谢。
布莱默

@Bleamer:set为我工作(但我没有本地人sh)。但我将其更改export为符合您的设置。
mpy

2
有什么办法可以使这个永久化?目前,每次登录我都必须这样做。谢谢!
the.ufon 2014年

3
您已将此行放置到/etc/profile(请参阅问题)或~/.profile?!
mpy 2014年

+1,但最后需要一些定界符。照原样,您foo@localhost:/home/fools -la使用时会得到类似的信息ls -la
phresnel 2015年

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

1
恐怕这不适用于bash shell,不适用于sh,当我这样做时,我会得到\u@\h:\w>命令提示符
Bleamer

1
必须是其他sh版本;从第一行可以看到,它在sh 4.2中对我有用。
詹妮·D

1
可能是这样。该外壳来自Busy Box。谢谢。感谢您的帮助。
布莱默

@Bleamer,它对我有用BusyBox v1.19.4 built-in shell (ash)
cjm 2013年

感谢您的回复@cjm,尽管我会避免进一步探讨。
Bleamer

5

此命令对我有用。

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

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


\ W参数+1
Dimitry K '18

3

人们可能会考虑通过添加一些颜色来拉皮条提示。例如:

export PS1='\[\e[0;36m\]\u\[\e[0m\]@\[\e[0;33m\]\h\[\e[0m\]:\[\e[0;35m\]\w\[\e[0m\]\$ '

1
这就是我想要的。我希望每个人都喜欢生活中的某些颜色:)
Govind Kailas

至少我知道。;)
Arvid

1

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

set PS1="$(pwd)" 

从set命令开始,将提示设置为工作目录。

set PS1="\$(pwd)" 

不扩展$(pwd)。而是将PS1设置为$(pwd)的文字值。

通过运行以下命令来测试/理解这一点:

echo $PS1

。如果看到字符串:$ pwd,提示将起作用。如果您看到文字路径,则提示已损坏,因为它是静态设置的


1

使用下面的命令来设置就像在cpanel中一样。

export PS1='$(whoami)@${HOSTNAME%%.*} [$(pwd)]#'


谢谢!上述其他选项均无效。这个做了。让我发疯。感谢您保存我的理智。哈!
Lee_Str
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.