为什么我正常登录时看不到 bash 自定义设置?

为什么我正常登录时看不到 bash 自定义设置?

我的用户的 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 等其他工具,则可以使用此工具。它不会发生在调用会话中;它会影响新的登录会话。

相关内容