loginshell non-login shell interactive shell non-interactive shell
资料一:login shell与 non-login shell的区别:
当你到家目录并且点用户图标,输入密码回车的时候,
背景其实有一个叫login shell的东西在运行
当你使用su命令切换用户的时候也是
1. /etc/profile
2. ~/.bash_profile 如果有的话就对他进行source,然后stop。
( .bash_profile的内容会是先区找.profile,然后找.bashrc)
the bash_profile all that should do is load the profile and then load bashrc
the .bash_profile all that should do is load the .profile and then load .bashrc
the profile is use to include anything that is like a non bash command
3. 如果没有:会去找 ~/.profile
4.如果上面的也没有找到 最后会去找~/.bash_login (通常我们几乎都没有这个文件,不存在)
关于 su -
su --login 或者 su -
non-login shell:
1. /etc/bash.bashrc
2. ~/.bashrc
如果你使用的是macos ,每次打开terminal 都是一个login shell
在linux上也可以这样,对terminal右键设置一下:
(如果你选了,每次打开都是一个login shell)
资料二:shell一共有四种:
interactive non-interactive login non-login:
shell is program runs commands
你可能在用bash shell,因为他是目前用的最多的
interactiveshell :期待用户进行input
non-interactive shell:一般是执行自动化过程,不期望交互性(比如sh -c这种)
login shell: expect to do sth only once they do them by reading certain files
while non-login shell don't read those files.
we can have 4 kinds of files in total
terminal(linux)中是 interactive non-login shell
资料三:可以在man bash中看更详细的介绍
资料四:
https://unix.stackexchange.com/questions/268253/trying-to-understand-bashrc-env-and-export