Linux运行环境

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

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

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

$ TEST="Linux Programming"
$ echo $TEST

它产生以下结果。

Linux Programming

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

当您登录系统时,shell会经历一个称为初始化的阶段来设置运行环境。 这通常是一个两步过程,涉及到shell读取/etc/profile.bash_profile。处理的过程如下:

  • shell检查文件/etc/profile是否存在。
  • 如果存在,shell会读取它。 否则,将跳过此文件。 不显示错误消息。
  • shell检查文件.bash_profile是否存在于您的主目录中。 您的主目录是您登录后默认的目录。
  • 如果存在,shell会读取它; 否则,shell会跳过它。 不显示错误消息。

.bash_profile文件

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

文件.bash_profile由您控制。 您可以向该文件添加任意数量的shell自定义信息。 您需要配置的最少信息集包括:

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

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

设置终端类型

通常,您使用的终端类型由login或getty程序自动配置。 有时,自动配置过程会错误地猜测您的终端。如果您的终端设置不正确,命令的输出可能看起来很奇怪,或者您可能无法与shell正确交互。为了确保不发生这种情况,大多数用户通过以下方式设置他们的终端。

$TERM=vt100

设置PATH

当您在命令提示符下键入任何命令时,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/tutorial/linux]$
[root@ip-72-167-112-17 /var/www/tutorial/linux]$

此命令的结果是提示符显示用户的用户名、机器的名称(主机名)和工作目录。

有很多转义序列可以用作PS1的值参数; 尽量只显示最关键的内容,这样提示就不会用信息淹没你。

NO 转义序列和描述
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身份登录),则提示#字符; 否则,使用$符号

## 环境变量

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

NO 变量和描述
1 DISPLAY 显示器标识符
2 HOME 表示当前用户的家目录:它是内置命令cd的默认参数。
3 LANG LANG扩展到默认系统区域设置; LC_ALL可以覆盖它。 例如,如果其值为pt_BR,则语言设置为(巴西)葡萄牙语,区域设置为巴西。
4 PATH 指示命令的搜索路径。 它是一个以冒号分隔的目录列表,shell在其中查找命令。
5 PWD 指示cd命令设置的当前工作目录。
6 RANDOM 每次引用时生成032767之间的随机整数。
7 SHLVL 每次启动bash实例时递增1。 此变量可用于确定内置exit命令是否结束当前会话。
8 TERM 指显示类型
9 TZ 指时区。 例如GMTAST等。
10 UID 当前用户的数字用户ID,在shell启动时初始化。