区分两者之间的区别,首先要搞清楚login shell
和no-login shell
之间的区别。
login shell
当你通过终端输入用户名和密码,然后进入到terminal,这时候进入的shell环境就叫做是login shell,例如,通过ssh
远程进入到主机。
no-login shell
顾名思义就是不需要输入用户名密码而进入的shell环境,例如你已经登陆了你的桌面电脑,这时候在应用管理器中找到termianl
图标,然后双击打开终端,也就是通过像gnome
,KDE
这种桌面环境而进入的终端,这时候你进入的shell环境就是所谓的no-login shell
环境。简而言之,就是把你想通过login shell
运行的shell命令放入到.bash_profile
中,把想通过no-login shell
运行的shell命令放入到.bashrc
文件中。
例外
有一个例外就是在Mac OS
系统中,当你每次运行termianl的时候,系统都会默认的给你运行一个login shell
环境,所以你看到在Mac OS
系统中~/
目录下只有一个.bash_profile
文件而没有.bashrc
文件,就是这个道理了。
如何同时使用两个文件?
那么如果我在Mac OS
系统中也想把一些shell命令放到.bashrc
文件中呢?当然不推荐这么做,也没什么意义,那么你可以创建一个.bashrc
的文件。然后在.bash_profile
文件中写上如下代码:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
在terminal读取.bash_profile
文件后就会load.bashrc
文件中的内容。