教程八

使用Google翻译翻译自: http://www.ee.surrey.ac.uk/Teaching/Unix/unix8.html


8.1 UNIX变量

变量是在运行程序时将信息从shell传递给程序的一种方式。程序在特定“环境”中查找变量,如果找到,则使用存储的值。一些变量由系统设置,一些由你设置,一些由shell设置,或者任何加载另一个程序的程序进行设置。

标准UNIX变量分为两类,即环境变量和shell变量。从广义上讲,shell变量仅适用于shell的当前实例,用于设置短期工作条件; 环境变量具有更大的作用范围,登录时设置的会话在会话期间有效。按照惯例,环境变量使用UPPER CASE的大写方式,shell变量使用小写的方式。

8.2环境变量

环境变量的一个例子是OSTYPE变量。这个值是您正在使用的当前操作系统的类型

%echo $OSTYPE

环境变量的更多例子是

查看这些变量的当前值。

环境变量使用setenv命令进行设置,使用printenvenv命令显示,并使用unsetenv命令取消设置。

要显示这些变量的所有值,请键入

%printenv | less

8.3 Shell变量

shell变量的一个例子是历史变量。该变量用于保存多少数量的shell命令,允许用户回滚之前输入的所有命令。键入

%echo $history

shell变量的更多例子

找出这些变量的当前值。

SHELL变量都使用set命令进行设置和显示。可以通过使用unset命令来取消设置。

要显示这些变量的所有值,请键入

%set | less

那么PATH和path有什么区别呢?

通常,具有相同名称(忽略大小写)的环境变量和shell变量是不同且独立的,除了可能具有相同的初始值。但是也有例外。

每次shell变量home,user和term被改变,相应的环境变量HOME,USER和TERM会变为相同的值。但是,更改环境变量对相应的shell变量没有影响。

PATH和path都指定命令和程序的搜索目录。两个变量总是表示相同的目录列表,并且更改会自动导致另一个更改。

8.4使用和设置变量

每次登录到UNIX主机时,系统会在您的主目录中查找初始化文件。这些文件中的信息用于设置您的工作环境。C和TC shell使用两个名为.login和.cshrc的文件(请注意,这两个文件名以点开头)。

在登录时,C shell首先读取.cshrc,然后是.login

.login将设置适用于整个会话的条件,并执行仅在登录时相关的操作。

.cshrc用于每次调用shell时设置条件并执行相关操作。

准则是将环境变量设置在.login文件中,SHELL变量设置在.cshrc文件中。

警告:不要在.cshrc或.login文件中放置运行图形显示(例如Web浏览器)的命令。

8.5在.cshrc文件中设置shell变量

例如,要更改保存在历史记录列表中的shell命令数,您需要设置history变量。默认设置为100,但如果您愿意,可以增加此值。

%set history = 200

检查是否工作:

%echo $history

但是,这只能为当前shell设置了变量。如果您打开一个新的xterm窗口,它将只有默认的历史记录值设置。要永久设置历史记录的值,您需要将set命令添加到.cshrc文件。

首先在文本编辑器中打开.cshrc文件。一个易于使用的用户友好的编辑器是nedit。

%nedit ~/.cshrc

在其他命令的列表之后添加以下行。

set history = 200

保存文件并强制shell使用shell source命令重新读取其.cshrc文件。

%source .cshrc

检查是否工作:

%echo $history

8.6设置路径

当您键入命令时,您的path(或PATH)变量定义了shell将在哪些目录中查找您键入的命令。如果系统返回一条消息说“command:Command not found”,这表示该命令根本不存在于系统上,或者它只是不在您的路径中。

例如,要运行units,您需要直接指定units所在的路径( ~/units174/bin/units),或者您需要 在path中添加目录 ~/units174/bin

您可以 通过以下命令将其添加到现有路径($path表示的路径)的末尾:

%set path =($path ~/units174/bin)

通过尝试在units之外的任何目录中运行该程序来测试是否工作:

%cd
%units

要永久添加此路径,请将以下行添加到.cshrc中的其他命令后面。

set path =($path ~/units174/bin)