📜  Unix / Linux-环境

📅  最后修改于: 2020-10-31 14:45:56             🧑  作者: Mango


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

一个变量是我们分配一个值的。分配的值可以是数字,文本,文件名,设备或任何其他类型的数据。

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

$TEST="Unix Programming"
$echo $TEST

它产生以下结果。

Unix Programming

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

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

  • / etc / profile
  • 个人资料

流程如下-

  • Shell检查以查看文件/ etc / profile是否存在。

  • 如果存在,则外壳程序将读取它。否则,将跳过此文件。没有错误信息显示。

  • 外壳程序会检查您的主目录中是否存在文件.profile 。您的主目录是您登录后开始的目录。

  • 如果存在,则外壳程序将读取它;否则,它将读取它。否则,shell将跳过它。没有错误信息显示。

读完这两个文件后,shell会显示提示-

$

这是提示,您可以在其中输入命令以执行命令。

–此处详细介绍的shell初始化过程适用于所有Bourne类型的shell,但是bashksh使用了一些其他文件。

.profile文件

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

文件.profile在您的控制之下。您可以根据需要向此文件添加尽可能多的Shell定制信息。您需要配置的最少信息集包括-

  • 您使用的终端类型。
  • 在其中找到命令的目录列表。
  • 影响终端外观的变量列表。

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

设置终端类型

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

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

为了确保不是这种情况,大多数用户通过以下方式将其终端设置为最低公分母-

$TERM=vt100
$

设置路径

在命令提示符下键入任何命令时,外壳程序必须先找到该命令,然后才能执行该命令。

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

$PATH=/bin:/usr/bin
$

这里,每个中的各个条目的分离由字符(:)是目录。如果您请求外壳执行命令,但在PATH变量给定的任何目录中都找不到它,则会显示类似以下内容的消息-

$hello
hello: not found
$

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

PS1和PS2变量

Shell作为命令提示符显示的字符存储在变量PS1中。您可以将此变量更改为所需的任何值。更改后,外壳将立即使用它。

例如,如果您发出命令-

$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的值参数。尝试将自己限制在最关键的位置,以使提示不会使您不知所措。

Sr.No. Escape Sequence & Description
1

\t

Current time, expressed as HH:MM:SS

2

\d

Current date, expressed as Weekday Month Date

3

\n

Newline

4

\s

Current shell environment

5

\W

Working directory

6

\w

Full path of the working directory

7

\u

Current user’s username

8

\h

Hostname of the current machine

9

\#

Command number of the current command. Increases when a new command is entered

10

\$

If the effective UID is 0 (that is, if you are logged in as root), end the prompt with the # character; otherwise, use the $ sign

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

当您发出不完整的命令时,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. Variable & Description
1

DISPLAY

Contains the identifier for the display that X11 programs should use by default.

2

HOME

Indicates the home directory of the current user: the default argument for the cd built-in command.

3

IFS

Indicates the Internal Field Separator that is used by the parser for word splitting after expansion.

4

LANG

LANG expands to the default system locale; LC_ALL can be used to override this. For example, if its value is pt_BR, then the language is set to (Brazilian) Portuguese and the locale to Brazil.

5

LD_LIBRARY_PATH

A Unix system with a dynamic linker, contains a colonseparated list of directories that the dynamic linker should search for shared objects when building a process image after exec, before searching in any other directories.

6

PATH

Indicates the search path for commands. It is a colon-separated list of directories in which the shell looks for commands.

7

PWD

Indicates the current working directory as set by the cd command.

8

RANDOM

Generates a random integer between 0 and 32,767 each time it is referenced.

9

SHLVL

Increments by one each time an instance of bash is started. This variable is useful for determining whether the built-in exit command ends the current session.

10

TERM

Refers to the display type.

11

TZ

Refers to Time zone. It can take values like GMT, AST, etc.

12

UID

Expands to the numeric user ID of the current user, initialized at the shell startup.

以下是显示很少的环境变量的示例示例-

$ echo $HOME
/root
]$ echo $DISPLAY

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