Unix / Linux - 环境

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

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

例如,首先我们设置变量TEST,然后使用 echo 命令 :

$TEST="Unix Programming"
$echo $TEST

它产生以下结果.

Unix Programming

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

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

  • /etc/profile

  • 个人资料

此过程如下 :

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

  • 如果是存在,shell读取它.否则,将跳过此文件.没有显示错误消息.

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

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

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

$

这是您可以输入命令以便拥有的提示他们被执行了.

注意 : 此处详述的shell初始化过程适用于所有 Bourne 类型的shell,但 bash ksh 使用了一些其他文件.

.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/IT屋/unix]$
[root@ip-72-167-112-17 /var/www/IT屋/unix]$

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

有很多转义序列可以用作值参数PS1;尝试将自己限制在最关键的位置,以便提示不会让您感到压力.

Sr.No.Escape Sequence&描述
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身份),以#字符结束提示;否则,请使用$ sign

您每次都可以自己进行更改登录,或者您可以通过将其添加到 .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
$

环境变量

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

Sr.No.变量&描述
1

DISPLAY

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

2

HOME

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

3

IFS

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

4

LANG

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

5

LD_LIBRARY_PATH

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

6

PATH

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

7

PWD

表示当前工作目录为由cd命令设置.

8

RANDOM

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

9

SHLVL

每次启动bash实例时增加1.此变量对于确定内置退出命令是否结束当前会话非常有用.

10

TERM

指显示类型.

11

TZ

指时区.它可以采用GMT,AST等值.

12

UID

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

以下示例显示了一些环境变量&minus ;

$ echo $HOME
/root
]$ echo $DISPLAY

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