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

 

posted @ 2021-04-20 23:23  hh9515  阅读(182)  评论(0编辑  收藏  举报