login shell和non-login shell环境配置、 环境变量的设置、查看

http://blog.csdn.net/hunanchenxingyu/article/details/17379799

一、测试场景

1、login shell 场景: 当系统启动时或你开启一个新的终端登录系统时,系统通过调用/bin/login程序处理登录并在一个shell中显示命令行提示符,这个shell就是login shell,也就是说通过用户名和密码登录的shell,例如:ssh远程登录以及图形界面登录(输入用户名和密码)

2、non-login shell 场景: 当用户直接在shell窗口中通过bash以及登录图形界面后打开的shell(CTRL+ALT+T)。

 

二、配置文件解析顺序

login shell :

1、全局(所有用户)设定  /etc/profile  只有login shell 才会读取

2、局部(依据用户)设定 ~/.bash_profile

                                           ~/.bash_login

                                           ~/.profile

其實 bash 的 login shell 設定只會讀取上面三個檔案的其中一個, 而讀取的順序則是依照上面的順序。也就是說,如果 ~/.bash_profile 存在,那麼其他兩個檔案不論有無存在,都不會被讀取。 如果 ~/.bash_profile 不存在才會去讀取 ~/.bash_login,而前兩者都不存在才會讀取 ~/.profile 的意思。(摘自鸟哥)

non-login shell:

局部(依据用户)设定: ~/.bashrc

當你取得 non-login shell 時,該 bash 設定檔僅會讀取 ~/.bashrc 而已啦(摘自鸟哥)。但是从父进程上继承过来的环境变量依然存在!

 
 
http://blog.csdn.net/chenchong08/article/details/7833242
 
增加环境变量

$ vi ~/.profile

添加如下内容:
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
修改后需要执行重新登录才能生效,也可以执行命令source /etc/profile来生效

临时的:使用export命令声明即可,变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,在关闭shell后失效,再打开新shell时就没有这个变量,需要使用的话还需要重新定义
在shell的命令行下直接使用[export 变量名=变量值] 定义变量

环境变量的查看
(1)使用echo命令查看单个环境变量。例如:
echo $PATH
(2)使用env查看所有环境变量。例如:
env
(3)使用set查看所有本地定义的环境变量。例如:
set
另外,unset可以删除指定的环境变量。

常用的环境变量
PATH 决定了shell将到哪些目录中寻找命令或程序
HOME 当前用户主目录
HISTSIZE 历史记录数
LOGNAME 当前用户的登录名
HOSTNAME 指主机的名称
SHELL 当前用户Shell类型
LANGUGE  语言相关的环境变量,多语言可以修改此环境变量
MAIL 当前用户的邮件存放目录
PS1 基本提示符,对于root用户是#,对于普通用户是$

发布了20 篇原创文章 · 获赞 2 · 访问量 4万+

一、测试场景

1、login shell 场景: 当系统启动时或你开启一个新的终端登录系统时,系统通过调用/bin/login程序处理登录并在一个shell中显示命令行提示符,这个shell就是login shell,也就是说通过用户名和密码登录的shell,例如:ssh远程登录以及图形界面登录(输入用户名和密码)

2、non-login shell 场景: 当用户直接在shell窗口中通过bash以及登录图形界面后打开的shell(CTRL+ALT+T)。

 

二、配置文件解析顺序

login shell :

1、全局(所有用户)设定  /etc/profile  只有login shell 才会读取

2、局部(依据用户)设定 ~/.bash_profile

                                           ~/.bash_login

                                           ~/.profile

其實 bash 的 login shell 設定只會讀取上面三個檔案的其中一個, 而讀取的順序則是依照上面的順序。也就是說,如果 ~/.bash_profile 存在,那麼其他兩個檔案不論有無存在,都不會被讀取。 如果 ~/.bash_profile 不存在才會去讀取 ~/.bash_login,而前兩者都不存在才會讀取 ~/.profile 的意思。(摘自鸟哥)

non-login shell:

局部(依据用户)设定: ~/.bashrc

當你取得 non-login shell 時,該 bash 設定檔僅會讀取 ~/.bashrc 而已啦(摘自鸟哥)。但是从父进程上继承过来的环境变量依然存在!

猜你喜欢

转载自blog.csdn.net/jji8877032/article/details/45096393