除非我运行,否则终端中的 Ubuntu 彩色文本不会显示

除非我运行,否则终端中的 Ubuntu 彩色文本不会显示

我正在使用来自 digital ocean 的 droplet (vps),当我第一次得到它并登录时,文本被自动着色,我一定做了一些改变才让它不被着色,现在我每次 ssh 进入 droplet 时都必须运行source ~/.bashrcsource ~/.profile运行。

我也取消了注释force_color_prompt=yes~/.bashrc问题仍然存在

答案1

通常,Bash 在启动时会获取一些文件;具体细节取决于它的调用方式。请参阅Bash 启动文件. 仅通过阅读该文档,无法真正了解 SSH 服务器(或您的 SSH 服务器)究竟如何调用bash,因此无法立即看出使用了哪组启动文件。

通常(并且最有可能是你的情况)人们会得到一个互动的登录shell 并且该文档片段适用:

作为交互式登录 shell 调用,或者使用--login

当 Bash 作为交互式登录 shell 或使用 选项作为非交互式 shell 调用时--login,它首先从文件 读取并执行命令/etc/profile(如果该文件存在)。读取该文件后,它会按顺序查找~/.bash_profile~/.bash_login~/.profile,然后从第一个存在且可读的文件中读取和执行命令。--noprofile启动 shell 时可以使用 选项来禁止此行为。[…]

还有另一个片段标题为“由远程 shell 守护程序调用”,但我的测试表明它适用于通过 SSH 运行 shell 命令(而不是交互式 shell)的情况。

我的假设是您创建了~/.bash_profileand/or ~/.bash_login,因此~/.profile不再是“第一个存在且可读的”。您~/.profile可能检测到 Bash 和源~/.bashrc(验证这一点),并且颜色在后一个文件中定义。

~/.bash_profile问问自己是否需要~/.bash_login;也许你放在那里的东西可以(或应该)放在其他地方。请阅读.bashrc和之间的区别.bash_profile

如果您确实需要~/.bash_profile~/.bash_login那么可以将其作为来源;或者像您假设的那样~/.profile,使其有条件地作为来源。~/.bashrc~/.profile

运行什么、以什么顺序从哪个文件获取什么应该由您做出明智的决定。我无法给您更详细的提示,因为我不知道您输入了什么~/.bash_profile~/.bash_login也不知道您试图实现什么。我只怀疑其中一个文件会阻止~/.profile(因此是~/.bashrc间接地)在启动时获取资源。

答案2

附加到此.bash_profile

if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

它确实为我解决了问题。

只需一行即可完成:

cat <<EOT >> ~/.bash_profile
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
EOT

相关内容