红联Linux门户
Linux帮助

linux中关于login shell和non-login shell的介绍

发布时间:2016-01-03 15:45:17来源:linux网站作者:_老坛酸菜_

1.login shell与non-login shell的概念

(1)login shell

取得shell(如bash)时需要完整的登录流程,就称为login shell。举例来说,有tty1-tty6登录,输入用户的账户和密码后,取得的shell就称为“login shell”

(2)non-login shell

取得shell不需要账户登录的流程。比如说,在X window登录linux后,在桌面右击获取的命令行窗口,此时不需要用账户名和密码进行登录,那这个bash的环境就称为non-login shell。在比如,在bash中再次执行bash命令,获取到的子bash进程,也没有登录动作,这个子bash进程同样是non-login shell。


2.login shell和non-login shell的区别

login shell和non-login shell的核心区别就是在获取shell时,读取的配置文件不同。

(1)login shell读取的配置文件

/etc/profile 该文件来设置系统的整体环境,通常是一些环境变量的配置。
~/.bash_profile或~/.bash_login或~/.profile三者中的一个,该文件是用户个人设置

(2)non-login shell读取的配置文件

~/.bashrc

备注,通常我们新增环境变量是在/eth/profile或~/.bash_profile中修改即可。比如在PATH环境变量中新添加一个路径:

#将/home/local/tmux/bin加入到环境变量PATH中 
export PATH=/home/local/tmux/bin:$PATH 
或 
PATH=/home/local/tmux/bin:$PATH 
export PATH 


关于linux中变量知识,参考:

1.Linux下的变量分为:

a)环境变量

b)自定义变量

c)与bash操作接口有关的变量,例如PS1,$,?等等这样的变量吧

Question:有关环境变量会不会有一个配置文件,记录了系统的所有环境变量呢?

2.有关变量的一些操作:

a)读取变量内容:$变量名 或 ${变量名}

b)取消变量:unset 变量名

c)将自定义变量变成环境变量:

——》export 自定义变量名 

——》declare -x 自定义环境变量

Question:这个变成了环境变量的变量,会不会在下次开机的时候继续有效呢,会不会系统的环境变量的设置其实是有一个配置文件的,其中会列举了系统的所有环境变量,系统开机的时候会主动去加载这个配置文件?

d)查看系统的所有环境变量:env 或 export

e)查看系统的所有变量:set 或 declare

f)环境变量变成自定义变量:declare +x  环境变量名

3.声明或定义一个自定义变量的方式:

a)直接方式:变量名=变量值

b)read方式(就是从键盘读取变量值,用于交互比较好):read [-pt] 变量名

c)declare/typeset方式:declare [-aixr] 变量名

Remarks:declare在声明或定义一个变量时,可以指定该变量时数组类型还是整型的。如果指定变量为整型的话,则后面可以直接利用变量进行算数操作。例如,declare -i sum=0,则后面可以直接用sum=sum+2这样的表达式。如果你不嫌麻烦的话,仍旧可以使用sum=$(($sum+2))

4.关于自定义变量和环境变量的区别

一个shell中的自定义变量和环境变量的区别体现在该shell的子shell环境能够继承该变量。如果是自定义变量,子shell不会继承该变量;如果是环境变量,子shell就会继承该变量。

将一个自定义变量转换成环境变量的方法如下:

export 自定义变量名称 

5.关于shell的父子shell关联性说明:

当你登录linux取得一个shell(如bash)之后,该shell就是一个独立的进程。接下来你在该shell下面执行任何操作都是有这个shell衍生出来的,如果该操作是用sh filename.sh或./filename.sh,那么会再取得一个该登录bash的bash子进程,如果脚本中含有命令,那么又是该bash子进程的子进程。如果该操作是一个命令,例如find,那么直接在登录取得到的bash下生成一个find的子进程。


ubuntu登陆login无法登陆用户解决方法:http://www.linuxdiyf.com/linux/15389.html

Linux SSH无密码login:http://www.linuxdiyf.com/linux/15174.html

ubuntu 15 login无法登陆循环登陆问题:http://www.linuxdiyf.com/linux/12401.html