Unix的一个重要概念是环境,被定义的环境变量。有些系统通过环境变量,还有一些由shell,或任何程序加载另一个程序。
变量是一个字符串,我们分配一个值。分配的值可以是一个数字,文本,文件名,移动设备,或任何其他类型的数据。
例如,首先我们设定一个变量测试,然后我们使用echo命令来访问它的值:
$TEST="Unix Programming" $echo $TEST Unix Programming
需要注意的是环境变量设置,而无需使用$符号,但访问它们时,我们使用$符号作为前缀。这些变量保持它们的值,直到我们设计出来shell。
当你登录到系统中,shell经过一个阶段称为初始化设置各种环境。这通常是一个两步的过程,涉及的的shell阅读下列文件:
-
/etc/profile
-
profile
过程如下:
-
shell进行检查,看是否存在文件 /etc/profile文件。
-
如果它存在,当shell读取。否则,此文件将被跳过。不显示错误消息。
-
shell检查,看看是否该文件。配置文件存在于你的home目录。主目录是开始在登录后的目录
-
如果它存在,当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 $