我正在使用来自 digital ocean 的 droplet (vps),当我第一次得到它并登录时,文本被自动着色,我一定做了一些改变才让它不被着色,现在我每次 ssh 进入 droplet 时都必须运行source ~/.bashrc
或source ~/.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_profile
and/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