在本章中,我们将详细讨论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 使用了一些其他文件.
文件/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等变量在下一节.
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 $