![bash 在 RHEL 6 上不读取 .bashrc](https://linux22.com/image/34502/bash%20%E5%9C%A8%20RHEL%206%20%E4%B8%8A%E4%B8%8D%E8%AF%BB%E5%8F%96%20.bashrc.png)
机器 A --RHEL 7 并更新。
机器 B — RHEL 6 并已更新。
如果我在 A (RHEL 7) 上执行此操作
SSH B
我进入了,就像我应该的那样,但我的 .bashrc 尚未运行。这对我来说是新的行为。我想我.bashrc
要在机器 B (RHEL 6) 上运行。我对/etc/ssh/sshd_config
和 进行了比较/etc/ssh/ssh_config
,它们是不同的,但我不明白为什么这些很重要。
ssh_config
仅空格和注释不同。
是的,我看到了这些东西,但即使如此,它也因为小于/大于其中的内容而破坏了 diff 输出。里面有什么我应该关心的吗?我对空格、注释和环境变量 ( AcceptEnv
) 进行了修改,这就是差异归结为的内容。
6面
Protocol 2
7 面
HostKey /etc/ssh/ssh_host_ecdsa_key
AuthorizedKeysFile .ssh/authorized_keys
UsePrivilegeSeparation sandbox
那么,我该去哪里查找我的.bashrc
无法运行的原因呢?我的.profile
,再说一遍:
alias lo='exit'
alias l='ls -CF'
alias ..='cd ..'
和我的.bashrc
:
PRINTER=its1
export PRINTER
DISPLAY=jgs:0.0
export DISPLAY
PATH=/usr/bin:/usr/sbin:/bin:/sbin:/opt/bin:/home/gl/bin:.
export PATH
PROXY=whiteproxy.arlut.utexas.edu:3128
export PROXY
cd /home/gl
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
/etc/bashrc
是库存。
答案1
~/.bashrc 文件并不总是被读取:请参阅Bash 启动文件在手册中。
您的 ~/.bash_profile (或 ~/.profile)是否调用您的 .bashrc 文件?这通常出现在 .profile 文件中:
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
答案2
也许文档令人困惑,但 Bash 的标准行为是在交互式登录 shell 上获取您的“配置文件”(.bash_profile、.bash_login、.profile,以该顺序中第一个找到的为准),在交互式非登录 shell 上获取 .bashrc。
sshd 通常会生成一个登录 shell,其中打开 X11 终端窗口通常是一个非登录 shell。
因此,当您 ssh 到计算机时,您不应期望读取 .bashrc。
也就是说,我通常建议用户在他们的“个人资料”中添加如下行
[[ -r ~/.bashrc ]] && source ~/.bashrc
最后,Bush 永远不会直接读取 /etc/bashrc,并且您在 bash 手册页中找不到任何提及它的内容。这是 RedHat 添加的文件,并且期望您的 ~/.bashrc 文件将获取它。创建帐户时应位于主目录中的默认 ~/.bashrc 应该执行此操作。如果没有,您应该在 /etc/skel 目录中找到一个示例。
答案3
最后,我.bashrc
从.profile
.对我来说,这意味着.profile
除了运行之外必须为空,.bashrc
以避免循环引用和其他混乱。
正如我在手册页中读到的那样,sshd
应该调用.bashrc
,但是,哦,好吧,我有一个解决方法。