ubuntu环境变量
环境变量
环境变量即当前环境下的参数或者变量。在操作系统中用来设置操作系统的一些参数。
四个文件
ubuntu下常配置的四个环境变量文件/etc/bash.bashrc、/etc/profile、~/.bashrc、~/.profile。这四个文件都用于配置环境变量,常常会搞不懂该配置哪一个。
/etc/和~/
四个文件有两个存放位置:/etc/目录和~/用户家目录。/etc/目录主要存放系统配置文件。而~/用户家目录则存放用户个人的文件。
显然,不同的存放位置对应的配置文件的作用域不同,对于/etc/bash.bashrc、/etc/profile存放在系统配置文件目录,则环境变量指定的内容作用于整个系统所有的用户。而~/.bashrc、~/.profile则只作用于当前的使用者用户。因此,如果想更改的内容对所用用户有效,则更改的环境变量应是/etc/下的bash.bashrc和profile文件,如果只想对个人用户有效,则需更改的是当前用户~/家目录下的.bashrc和.profile文件。
bashrc和profile
四个文件又分为两大类,bashrc类文件和profile类文件。不同文件的作用方式又有不同,bashrc文件主要作用于bash shell,用于设置与bash shell 相关的东西,而profile文件则作用于整个系统环境,用于设置系统环境参数。
对于bashrc文件,作用于bash shell(linux的shell有多种:sh\bash\csh\ksh),只要用户运行bash命令,该文件里的内容就会起作用,当重新打开一个shell(打开一个新shell和打开一个新终端terminal不一样,)时就会重新读取bashrc文件的内容,即更改的内容会随着新的shell而生效,也可以使用sourse 来更新bashrc的内容。
对于profile文件,作用于整个系统,它是在系统启动,用户第一次登录时被读取执行的,因此一般情况下是需要重启系统才能生效的。
下面是摘抄自网络的
交互式shell和非交互式shell:交互与非交互的定义是在于shell是否与终端(用户)进行数据交互(即接受来自键盘的输入,并将结果输出到显示器),交互式根据用户输入而产生输出,而非交互式通常不直接接受用户的输入,也不直接在终端输出结果。通常用户写的shell脚本都是非交互式的,通过sh 直接运行该脚本文件。
login-shell和nonlogin-shell:login即登录的意思,因此这两种shell的区别在于是否需要用户登录login-shell是说在取得bash时需要完整的登陆流程。如tty1~tty6登录,需要输入账号和密码,此时取得的bash就是login shell(ctl+alt+f1)。non-login shell就是取得bash不需要重复登录,终端启动的shell输入窗口就是non-login shell。在shell窗口直接su切换的用户,也属于non-login shell(ctl+alt+t