UNIX 环境 - Unix

Unix的一个重要概念是环境,被定义的环境变量。有些系统通过环境变量,还有一些由shell,或任何程序加载另一个程序。

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

例如,首先我们设定一个变量测试,然后我们使用echo命令来访问它的值:

$TEST="Unix Programming"
$echo $TEST
Unix Programming

需要注意的是环境变量设置,而无需使用$符号,但访问它们时,我们使用$符号作为前缀。这些变量保持它们的值,直到我们设计出来shell。

当你登录到系统中,shell经过一个阶段称为初始化设置各种环境。这通常是一个两步的过程,涉及的的shell阅读下列文件:

  • /etc/profile

  • profile

过程如下:

  1. shell进行检查,看是否存在文件 /etc/profile文件。

  2. 如果它存在,当shell读取。否则,此文件将被跳过。不显示错误消息。

  3. shell检查,看看是否该文件。配置文件存在于你的home目录。主目录是开始在登录后的目录

  4. 如果它存在,当shell读取它,否则shell跳过。不显示错误消息。

只要这两个文件被读取,shell将显示一个提示:

$

这是提示这里你可以输入命令,以让他们执行。

注 - 这里详述shell初始化过程适用于所有的Bourne型shell,但所使用的是bash和ksh一些额外的文件。

.profile 文件:

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

该文件 .profile是在你的控制之下。您可以添加尽可能多的 shell定制信息,只要想这个文件。最小信息集,需要配置包括:

  • 使用的终端的类型

  • 在其中定位命令的目录的列表

  • 列表变量,影响终端的外观和风格。

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

设置终端类型:

通常情况下,使用的终端自动配置通过登录或getty程序。有时,自动配置过程中猜测终端不正确。

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

为了确保,这是没有的情况下,大多数用户他们的终端设置到最低共同如下:

$TERM=vt100
$

设置路径:

当输入任何命令在命令提示符下,shell也有定位才可以执行的命令。

PATH变量中指定位置的的shell看起来应该命令。一般它被设置如下:

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

此命令的结果是,提示显示用户的用户名,机器名(hostname),工作目录。

有相当多的PS1的值参数可以用来作为转义序列,试图限制了,提示没有太多的信息。

Escape Sequence 描述
Current time, expressed as HH:MM:SS.
d Current date, expressed as Weekday Month Date Newline.
s Current shell environment.
W Working directory.
w Full path of the working directory.
u Current user.s username.
h Hostname of the current machine.
# Command number of the current command. Increases with each new command entered.
$ If the effective UID is 0 (that is, if you are logged in as root), end the prompt with the # character; otherwise, use the $.

可以使自己的变化,每次登录时,或者可以将它添加到您的配置文件中所做的更改会自动在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
$

环境变量:

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

变量 描述
DISPLAY Contains the identifier for the display that X11 programs should use by default.
HOME Indicates the home directory of the current user: the default argument for the cd built-in command.
IFS Indicates the Internal Field Separator that is used by the parser for word splitting after expansion.
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.
LD_LIBRARY_PATH On many Unix systems with a dynamic linker, contains a colon-separated 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.
PATH Indicates search path for commands. It is a colon-separated list of directories in which the shell looks for commands.
PWD Indicates the current working directory as set by the cd command.
RANDOM Generates a random integer between 0 and 32,767 each time it is referenced.
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.
TERM Refers to the display type
TZ Refers to Time zone. It can take values like GMT, AST, etc.
UID Expands to the numeric user ID of the current user, initialized at shell startup.

以下是几个环境变量的样本示例:

$ echo $HOME
/root
]$ echo $DISPLAY

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