ssh
我通过远程 Ubuntu-Machine登录。
默认情况下,我处于名为 (请注意连字符) 的终端中-bash
。此 bash 不会加载/使用我的 ~/.bashrc。
当进入bash
终端时,我进入一个终端,它也使用我的.bashrc。
-bash
现在,和之间有什么区别bash
。为什么我默认登录到版本-bash
。我chsh -s /bin/bash
已经执行并重新启动了机器,根据这个帖子设置默认环境。这似乎失败了。最后但并非最不重要的是,如果我无法更改为“正常” bash,我该如何让 -bash 使用我的 .bashrc?
为了说明我的问题,下面是显示控制台输出的工作流程:
user@machine:~$ echo $0
-bash
user@machine:~$ bash
user@machine:~$ echo $0
bash
答案1
对于 shell,在 argv[0] 前面加上破折号是要求其成为“登录 shell”的传统方式(相当于bash --login
)。登录 shell 与“常规”shell 不同,因为它们使用不同的启动脚本(例如~/.profile
而不是~/.bashrc
)——它可能显示问候语、检查邮件、启动 ssh-agent 等等……换句话说,这些任务只需执行一次。
通常,需要手动告知登录 shell.bashrc
使用以下命令进行加载:
. ~/.bashrc
或者:
source ~/.bashrc
在脚本的末尾~/.bash_profile
。