个性化阅读
专注于IT技术分析

Unix和Linux环境和环境变量详细介绍

上一章Unix和Linux教程请查看:Unix文件权限与访问模式和权限操作

在本章中我们将详细讨论Unix环境。环境是Unix的一个重要概念,它由环境变量定义,一些由系统设置另一些自定义设置,还有一些由shell或任何加载其他程序的程序设置。

1、Unix/Linux环境及环境变量概念

变量是我们赋值的字符串,赋值可以是数字、文本、文件名、设备或任何其他类型的数据。例如首先设置一个变量测试,然后使用echo命令访问它的值:

$TEST="shell Programming"
$echo $TEST

请注意环境变量的设置没有使用$符号,我们只是在访问它们时使用$符号作为前缀。这些变量会一直保留它们的值,直到我们退出shell。

当你登录到Unix系统时,shell将经历一个称为初始化的阶段来设置环境。这通常需要两个步骤,其中包括shell读取以下文件:

(1)/etc/profile

(2)profile配置文件

过程如下:

  • shell检查文件/etc/profile是否存在。
  • 如果它存在则shell将读取它,否则将跳过此文件,过程不会显示错误消息。
  • shell检查文件.profile是否存在于主目录中,主目录是在你登录之后开始的目录。
  • 如果它存在则shell将读取它,否则shell就会跳过它,过程不会显示错误消息。
  • 一旦读取了这两个文件shell就会显示一个提示符$

在这个提示符中我们可以输入命令以执行它们。注意这里详细介绍的shell初始化过程适用于所有Bourne类型的shell,但是bash和ksh使用了一些额外的文件。

2、.profile文件

文件/etc/profile由Unix机器的系统管理员维护,包含系统上所有用户所需的shell初始化信息。

文件.profile在你的当前用户控制之下,你可以向该文件添加任意多的shell自定义信息,我们需要配置的最小信息集包括:

  • 使用的终端类型。
  • 用于定位命令的目录列表。
  • 影响终端外观和体验的变量列表。

我们可以检查主目录中可用的.profile并使用vi/vim编辑器打开它,并检查为你的环境设置的所有变量。

3、设置终端类型

我们一般使用的终端类型是由login或getty程序自动配置的,不过有时自动配置过程会错误地猜测你的终端。如果你的终端设置不正确,命令的输出可能看起来很奇怪,或者你可能无法正确地与shell交互。

为了确保不是这样的错误情况,大多数用户将他们的终端设置为最低标准,方法如下:

$TERM=vt100
$

4、设置路径

当你在命令提示符上键入任何命令时,shell必须先定位该命令然后才能执行它。PATH变量指定shell应该查找命令的位置,Path变量的一般设置如下:

$PATH=/bin:/usr/bin
$

这里用冒号(:)分隔的每个条目都是目录,如果你请求shell执行一个命令,但是它在PATH变量中给出的任何目录中都找不到它,那么将提示你该命令为not found。

5、PS1和PS2变量

shell作为命令提示符显示的字符存储在变量PS1中,你可以任意改变这个变量。如果你改变了它就会被shell使用。例如如果我们执行如下命令:

$PS1='=>'
=>
=>
=>

我们的提示符将变成了=>,要设置PS1的值以便显示工作目录可以执行以下命令:

=>PS1="[\u@\h \w]\$"
[root@ip-x-x-x /var/www/srcmini/unix]$
[root@ip-x-x-x /var/www/srcmini/unix]$

该命令的结果是提示显示用户的用户名、机器的名称(主机名)和工作目录。有相当多的转义序列可以用作PS1的值参数,尽量把自己限制在最关键的部分,这样提示信息就不会让你不知所措。

编号 转义序列 & 简述
1 \t 当前时间表示为HH:MM:SS
2 \d 当前日期表示为工作日的月日
3 \n 新的一行
4 \s 当前shell环境
5 \W 工作目录
6 \w 工作目录的完整路径
7 \u 当前用户的用户名
8 \h 当前计算机的主机名
9 \# 当前命令的命令编号,当输入新命令时增加
10 \$ 如果有效的UID是0(也就是说以root身份登录),那么用#字符结束提示,否则使用$符号

我们可以在每次登录时自己进行更改,也可以在PS1中将更改自动添加到.profile文件中。若你发出一个不完整的命令,shell将显示一个辅助提示并等待你完成命令并再次回车。

默认的辅助提示符是>(大于号),但是可以通过重新定义PS2 shell变量来更改它下面是使用默认辅助提示符的例子:

$ echo "es una
> test"
es una
test
$

下面给出的示例使用定制的提示重新定义了PS2:

$ PS2="secondary prompt->"
$ echo "es una
secondary prompt->test"
es una
test
$

6、环境变量

以下是重要环境变量的部分列表,如下所述设置并访问这些变量:

编号 变量 & 描述
1 DISPLAY 包含X11程序默认应该使用的显示标识符。
2 HOME 指示当前用户的主目录:cd内置命令的默认参数。
3 IFS 指示解析器在展开后用于分词的内部字段分隔符。
4 LANG LANG扩展到默认的系统语言环境,LC_ALL可以用来覆盖它。
5 LD_LIBRARY_PATH 在一个带有动态链接器的Unix系统中,包含一个列分隔的目录列表,动态链接器在执行exec之后构建进程映像时,在搜索任何其他目录之前,应该搜索这个列表中的共享对象。
6 PATH 指示命令的搜索路径。它是一个冒号分隔的目录列表,shell在其中查找命令。
7 PWD 指示由cd命令设置的当前工作目录。
8 RANDOM 每次引用一个0到32,767之间的随机整数。
9 SHLVL 每次启动bash实例时递增一个。此变量对于确定内置的exit命令是否结束当前会话非常有用。
10 TERM 表示显示类型。
11 TZ 指时区。它可以采用诸如GMT、AST等值。
12 UID 展开为当前用户的数字用户ID,在shell启动时初始化。
赞(0)
未经允许不得转载:srcmini » Unix和Linux环境和环境变量详细介绍

评论 抢沙发

评论前必须登录!