第九部分(Shell环境)

2020-04-09
shell 在 shell 会话中保存着大量信息。这些信息被称为 (shell 的) 环境。
程序获取环境中的数据(即环境变量)来了解本机的配置。虽然大多数程序用配置文件来存储程序设置,一些程序会根据环境变量来调整他们的行为。

什么存储在环境变量中?

shell 在环境中存储了两种基本类型的数据,虽然 bash 几乎无法分辨这些数据的类型。它们是环境变量和 shell 变量。Shell 变量是 bash 存放的少量数据。剩下的都是环境变量。除了变量,shell 也存储了一些可编程的数据,即别名和 shell 函数。

检查环境变量

我们可以用 bash 的内建命令 set,或者是 printenv 程序来查看环境变量。set 命令可以显示shell 或环境变量,而 printenv 只是显示环境变量。因为环境变量列表比较长,最好把每个命令的输出通过管道传递给 less 来阅读:

[root@VM_0_7_centos ~]# printenv | less


XDG_SESSION_ID=597
HOSTNAME=VM_0_7_centos
TERM=xterm
SHELL=/bin/bash
HISTSIZE=3000
SSH_CLIENT=111.19.105.203 1992 22
SSH_TTY=/dev/pts/0
JRE_HOME=/usr/local/jdk-11.0.6/jre
USER=root
...

我们所看到的是环境变量及其数值的列表。例如,我们看到一个叫做 USER 的变量,这个变量值是 “root”。printenv 命令也能够列出特定变量的数值:

[root@VM_0_7_centos ~]# printenv USER
root

当使用没有带选项和参数的 set 命令时,shell 变量,环境变量,和定义的 shell 函数都会被显示。不同于 printenv 命令,set 命令的输出很友好地按照首字母顺序排列。

也可以通过 echo 命令来查看一个变量的内容,像这样:

[root@VM_0_7_centos ~]# echo $HOME
/root

别名无法通过使用 setprintenv 来查看。用不带参数的 alias 来查看别名:

[root@VM_0_7_centos ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

一些有趣的环境变量


环境变量

如何建立 shell 环境?

当我们登录系统后,bash 程序启动,并且会读取一系列称为启动文件的配置脚本,这些文件定义了默认的可供所有用户共享的 shell 环境。然后是读取更多位于我们自己家目录中的启动文件,这些启动文件定义了用户个人的 shell 环境。确切的启动顺序依赖于要运行的 shell 会话类型。有两种 shell 会话类型:一个是登录 shell 会话,另一个是非登录 shell 会话。
登录 shell 会话会在其中提示用户输入用户名和密码;例如,我们启动一个虚拟控制台会话。非登录 shell 会话通常当我们在 GUI 下启动终端会话时出现。

登录 shell 会读取一个或多个启动文件,如下所示:

登录shell会话的启动文件

非登录 shell 会话会读取以下启动文件:
非登录shell会话的启动文件
除了读取以上启动文件之外,非登录 shell 会话也会继承它们父进程的环境设置,通常是一个登录 shell。

在普通用户看来,文件 ∼/.bashrc 可能是最重要的启动文件,因为它几乎总是被读取。非登录 shell 默认会读取它,并且大多数登录 shell 的启动文件会以能读取 ∼/.bashrc 文件的方式来书写。

一个启动文件的内容

PATH 变量经常(但不总是,依赖于发行版)在 /etc/profile 启动文件中设置,通过这些代码:

PATH=$PATH:$HOME/bin

修改 PATH 变量,添加目录 $HOME/bin 到目录列表的末尾。

export PATH

这个 export 命令告诉 shell 让这个 shell 的子进程可以使用 PATH 变量的内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值