如何恢复macOS中su命令的默认提示符并去除sh-3.2#?
我明白你的困扰——默认root的sh-3.2#提示符确实有点简陋,咱们一步步把它改成更友好的样式,和你普通用户的提示符风格对齐。
第一步:确认root当前使用的Shell
先su到root后,执行这条命令看看当前Shell:
echo $SHELL
如果输出是/bin/sh,这就是问题根源——macOS默认root用的是老式的Bourne Shell,提示符就是sh-3.2#。咱们先把root的默认Shell换成和普通用户一致的(比如zsh或者bash)。
第二步:修改root的默认Shell
如果你平时用zsh(现在macOS普通用户默认是zsh),执行这条命令切换root的默认Shell:
chsh -s /bin/zsh root
如果习惯用bash,就换成:
chsh -s /bin/bash root
执行完后退出root(输入exit),重新su进去,你会发现Shell已经变了,提示符也会更接近普通用户的样式。
第三步:自定义root的提示符样式
如果切换Shell后你还想调整提示符细节(比如显示主机名、当前路径等),咱们编辑对应的配置文件:
如果你用zsh:
创建/编辑root家目录下的.zshrc文件:
nano ~/.zshrc
添加一行自定义提示符的配置,比如和普通用户类似但结尾用#(区分root身份):
PROMPT='%n@%m:%~# '
保存退出(按Ctrl+O,回车,再Ctrl+X),然后让配置生效:
source ~/.zshrc
现在提示符会变成类似root@yourMac:~#的样式。
如果你用bash:
创建/编辑root家目录下的.bash_profile文件:
nano ~/.bash_profile
添加PS1的配置,比如:
PS1='\u@\h:\w# '
保存退出后生效:
source ~/.bash_profile
提示符就会变成root@yourMac:~#这样的样式。
小提示
如果你只是临时想改一次提示符,不想永久生效,直接在root终端里输入对应的PS1或PROMPT命令就行,比如zsh下输入PROMPT='%n@%m:%~# ',立刻就能看到效果,但重启终端后会恢复默认,所以还是配置文件更靠谱。
内容的提问来源于stack exchange,提问作者user8087155

