Unix / Linux - 环境


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

变量是我们为其赋值的字符串。分配的值可以是数字、文本、文件名、设备或任何其他类型的数据。

例如,首先我们设置一个变量 TEST,然后使用echo命令访问它的值-

$TEST="Unix Programming"
$echo $TEST

它产生以下结果。

Unix Programming

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

当您登录系统时,shell 会经历一个称为初始化的阶段来设置环境。这通常是一个两步过程,涉及 shell 读取以下文件 -

  • /etc/配置文件
  • 轮廓

过程如下 -

  • shell 检查文件/etc/profile是否存在。

  • 如果存在,shell 会读取它。否则,将跳过该文件。不显示错误消息。

  • shell 检查文件.profile是否存在于您的主目录中。您的主目录是您登录后开始的目录。

  • 如果存在,shell 会读取它;否则,shell 会跳过它。不显示错误消息。

一旦读取了这两个文件,shell 就会显示一个提示 -

$

这是您可以输入命令以执行命令的提示。

注意- 此处详细介绍的 shell 初始化过程适用于所有Bourne类型 shell,但bashksh使用一些附加文件。

.profile 文件

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

文件.profile由您控制。您可以根据需要向此文件添加任意数量的 shell 自定义信息。您需要配置的最小信息集包括 -

  • 您正在使用的终端类型。
  • 命令所在的目录列表。
  • 影响终端外观的变量列表。

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

设置终端类型

通常,您使用的终端类型是由登录getty程序自动配置的。有时,自动配置过程会错误地猜测您的终端。

如果您的终端设置不正确,命令的输出可能看起来很奇怪,或者您可能无法与 shell 正确交互。

为了确保情况并非如此,大多数用户通过以下方式将其终端设置为最低公分母 -

$TERM=vt100
$

设置路径

当您在命令提示符下键入任何命令时,shell 必须先找到该命令,然后才能执行该命令。

PATH 变量指定 shell 应在其中查找命令的位置。通常 Path 变量设置如下 -

$PATH=/bin:/usr/bin
$

此处,由冒号字符(:)分隔的每个单独条目都是目录。如果您请求 shell 执行命令,但它无法在 PATH 变量中给定的任何目录中找到该命令,则会出现类似于以下内容的消息 -

$hello
hello: not found
$

PS1 和 PS2 等变量将在下一节中讨论。

PS1 和 PS2 变量

shell 作为命令提示符显示的字符存储在变量 PS1 中。您可以将此变量更改为您想要的任何内容。一旦你改变它,它就会被 shell 从那时起使用。

例如,如果您发出命令 -

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

您的提示符将变为 =>。要设置PS1的值以使其显示工作目录,请发出命令 -

=>PS1="[\u@\h \w]\$"
[root@ip-72-167-112-17 /var/www/tutorialspoint/unix]$
[root@ip-72-167-112-17 /var/www/tutorialspoint/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身份登录),则以#字符结束提示符;否则,使用 $ 符号

您可以在每次登录时自行进行更改,也可以通过将更改添加到.profile文件来在 PS1 中自动进行更改。

当您发出不完整的命令时,shell 将显示辅助提示符并等待您完成该命令并再次按Enter 键

默认的辅助提示符是>(大于号),但可以通过重新定义PS2 shell 变量来更改 -

以下是使用默认辅助提示的示例 -

$ echo "this is a
> test"
this is a
test
$

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

$ PS2="secondary prompt->"
$ echo "this is a
secondary prompt->test"
this is a
test
$

环境变量

以下是重要环境变量的部分列表。这些变量的设置和访问如下所述 -

先生。 变量和描述
1

展示

包含X11程序默认使用的显示器标识符。

2

指示当前用户的主目录:cd内置命令的默认参数。

3

IFS

表示解析器在扩展后用于分词的内部字段分隔符。

4

兰格

LANG 扩展到默认系统区域设置;LC_ALL 可用于覆盖它。例如,如果其值为pt_BR,则语言设置为(巴西)葡萄牙语,区域设置为巴西。

5

LD_LIBRARY_PATH

具有动态链接器的 Unix 系统包含一个以冒号分隔的目录列表,在 exec 之后构建进程映像时,动态链接器应在搜索任何其他目录之前搜索共享对象。

6

小路

指示命令的搜索路径。它是一个以冒号分隔的目录列表,shell 在其中查找命令。

7

残疾人士

指示由 cd 命令设置的当前工作目录。

8

随机的

每次引用时生成 0 到 32,767 之间的随机整数。

9

SHLVL

每次启动 bash 实例时加一。该变量对于确定内置 exit 命令是否结束当前会话很有用。

10

学期

指显示类型。

11

泰兹

指时区。它可以采用 GMT、AST 等值。

12

用户识别码

扩展为当前用户的数字用户 ID,在 shell 启动时初始化。

以下是显示一些环境变量的示例 -

$ echo $HOME
/root
]$ echo $DISPLAY

$ echo $TERM
xterm
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/amrood/bin:/usr/local/bin
$