登录到“-bash”,而不是“bash”。有什么区别?

登录到“-bash”,而不是“bash”。有什么区别?

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

相关内容