![为什么我正常登录时看不到 bash 自定义设置?](https://linux22.com/image/79903/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E6%AD%A3%E5%B8%B8%E7%99%BB%E5%BD%95%E6%97%B6%E7%9C%8B%E4%B8%8D%E5%88%B0%20bash%20%E8%87%AA%E5%AE%9A%E4%B9%89%E8%AE%BE%E7%BD%AE%EF%BC%9F.png)
我的用户的 shell 提示符卡住了
[bash-4.2]$还有许多有用的命令,例如
ll
不适用于 bash-4.2 shell。
我尝试了chsh
命令和usermod
命令,但都没有解决这个问题。
我已签入该/etc/passwd
文件,与我的用户关联的 shell 是/bin/bash
.其他用户也有相同的行,但这些用户会看到正常的 bash 提示符:
[vin@localhost ~]$
我~/.bash_profile
的是
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
vin
我注意到,当我通过 root 或具有正常 bash 的另一个帐户登录我的用户时,它会保留该 bash 类型,不会返回到损坏的 bash。
可能出什么问题了?有谁知道如何解决这一问题?
答案1
这:[bash-4.2]$
称为“shell 提示符”,而不是“shell 名称”。
Bash 中的 shell 提示符存储在一个名为 的普通 shell 变量中PS1
。的内容PS1
是一个提示格式字符串,由普通文本加上特殊代码组成,例如\h
插入主机名、\w
插入工作目录或\$
插入字符#
(如果用户是)root
或$
其他。例如:
PS1='\h:\w\$ '
现在你的提示看起来像:
machinename:/path/to/where/you/are$ _
下划线代表光标。根据 Bash 最新版本的手册页, PS1 的默认值是\s-\v\$
,它会生成 shell 名称、文字破折号、shell 版本和后面不跟空格的提示:正是您所看到的。
阅读 Bash 手册页,然后跳至参考资料部分PROMPTING
以阅读有关此主题的所有内容。
由于您的帐户和他们的帐户之间存在一些配置差异,其他用户有更好的提示。您可能缺少一些配置文件,例如~/.bash_profile
和~/.bashrc
,或者PS1
未在这些文件中进行配置。也许您的帐户根本没有正确的主目录。
该chsh
命令完全更改您的登录 shell,就像使用不同的程序一样。如果您根本不想使用 Bash,而是想使用 Zsh 或 Tcsh 等其他工具,则可以使用此工具。它不会发生在调用会话中;它会影响新的登录会话。