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

