The linux command之环境


一、环境

shell在环境中存储了两种数据类型:环境变量(environment variables )shell变量(shell variables).在shell中这两种变量基本没有什么不同。

此外shell还存放一些变成数据(programmatic data),分别是aliase和shell functions.

为了看环境中存储的东西:我们使用set和printenv程序来观察。set会显示shell和environment中的变量。printenv只会显示环境中的变量。

1 [me@linuxbox ~]$ printenv | less

显示了一系列环境变量及其对应值,我们也可以使用pritenv观察某个特定变量的值。

1 [me@linuxbox ~]$ printenv USER
2 me
1 [me@linuxbox ~]$ set | less
1 [me@linuxbox ~]$ echo $HOME
2 /home/me

alias需要使用alias显示

1 [me@linuxbox ~]$ alias
2 alias l.='ls -d .* --color=tty'
3 alias ll='ls -l --color=tty'
4 alias ls='ls --color=tty'
5 alias vi='vim'
6 alias which='alias | /usr/bin/which --tty-only --read-alias --showdot
7 --show-tilde'

 部分环境变量如下图所示:


二、环境建立过程

当我们登录系统时,bash程序启动,从启动文件里读取一系列配置脚本。配置脚本里有所有用户的默认环境配置。

 shell会话类型有两种,它决定了启动文件的执行顺序。

login shell:提示我们输入用户名和密码,例如虚拟控制台会话。

non-login shell:大多发生在我们使用GUI启动终端。

在读取以上启动文件之后,non-login shell还会继承父类进程的环境,通常是一个login shell。

由于大部分启动文件以“.”开头,意味着他们是隐藏的,所以在使用ls查看时要加上-a。

~./bashrc是一个最重要的启动文件。

我们来看下启动文件中有什么?

1 # .bash_profile
2 # Get the aliases and functions
3 if [ -f ~/.bashrc ]; then
4 . ~/.bashrc
5 fi
6 # User specific environment and startup programs
7 PATH=$PATH:$HOME/bin
8 export PATH

其中三、四行翻译如下:

1 If the file "~/.bashrc" exists, then
2 read the "~/.bashrc" file.

以上启动文件中的另一个重要因素是PATH变量。当用户输入ls,shell不会搜索整个系统来寻找/bin/ls(ls命令的完整路径名)而是会搜索

PATH变量中存储的目录列表。PATH变量通常是由启动文件/etc/profile中的一段代码设定。

1 PATH=$PATH:$HOME/bin

以上代码是利用参数扩展将$HOME/bin添加到PATH值的尾部。当系统需要检索用户输入的命令时,$HOME/bin这个路径会处于被搜索的路径列表之中。

1 export PATH

以上命令告诉shell子进程也可以使用PATH变量的内容。


三、修改环境

在PATH中添加变量或者定义另外的环境变量,是在.bash_profile(ubuntu是在.profile)中修改。其他的修改是在.bashrc中。


1 [me@linuxbox ~]$ printenv | less
陈小洁的三只猫
原文地址:https://www.cnblogs.com/ccpang/p/11340547.html