如何改变PS1的值。

如何改变PS1的值。

我以 Linux 2.6.18 机器的 root 身份登录。我将 PS1 的值更改为:

export PS1="$PWD> "

它可以工作,并将命令提示符硬编码为主目录,后跟>。现在我希望它显示我现在所在的当前目录。

我该如何设置?有没有文档解释 PS1 变量如何工作的代码?

答案1

尝试这个

导出 PS1="[\w]$ "

这里

w 代表当前工作目录

更多信息请参见关联


编辑:这些是 bash 在 PS1 和 PS2 中理解的特殊字符

\a : an ASCII bell character (07)
\d : the date in "Weekday Month Date" format (e.g., "Tue May 26")
\D{format} : the format is passed to strftime(3) and the result is inserted into 
             the prompt string; an empty format results in a locale-specific time 
             representation. The braces are required
\e : an ASCII escape character (033)
\h : the hostname up to the first '.'
\H : the hostname
\j : the number of jobs currently managed by the shell
\l : the basename of the shell’s terminal device name
\n : newline
\r : carriage return
\s : the name of the shell, the basename of $0 (the portion following the final 
     slash)
\t : the current time in 24-hour HH:MM:SS format
\T : the current time in 12-hour HH:MM:SS format
\@ : the current time in 12-hour am/pm format
\A : the current time in 24-hour HH:MM format
\u : the username of the current user
\v : the version of bash (e.g., 2.00)
\V : the release of bash, version + patch level (e.g., 2.00.0)
\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
\! : the history number of this command
\# : the command number of this command
\$ : if the effective UID is 0, a #, otherwise a $
\nnn : the character corresponding to the octal number nnn
\\ : a backslash
\[ : begin a sequence of non-printing characters, which could be used to embed a 
     terminal control sequence into the prompt
\] : end a sequence of non-printing characters

答案2

你能确保你真的运行的是 bash,而不是某种 busybox 吗?

echo $SHELL

应该会显示 shell。(我假设是 /bin/bash)

然后你可以看看

ls -l /bin/bash

如果它指向其他地方(链接)或者它是实际的可执行文件

答案3

这在其他 Linux 机器上有效。我不知道为什么它在这里不起作用。

也许是因为在其他机器上你有类似的东西

$ PS1="\$(pwd)> "
/tmp> cd /
/>

相关内容