使用Google翻译翻译自: http://www.ee.surrey.ac.uk/Teaching/Unix/unix8.html
变量是在运行程序时将信息从shell传递给程序的一种方式。程序在特定“环境”中查找变量,如果找到,则使用存储的值。一些变量由系统设置,一些由你设置,一些由shell设置,或者任何加载另一个程序的程序进行设置。
标准UNIX变量分为两类,即环境变量和shell变量。从广义上讲,shell变量仅适用于shell的当前实例,用于设置短期工作条件; 环境变量具有更大的作用范围,登录时设置的会话在会话期间有效。按照惯例,环境变量使用UPPER CASE的大写方式,shell变量使用小写的方式。
环境变量的一个例子是OSTYPE变量。这个值是您正在使用的当前操作系统的类型
%echo $OSTYPE
环境变量的更多例子是
环境变量使用setenv命令进行设置,使用printenv或env命令显示,并使用unsetenv命令取消设置。
要显示这些变量的所有值,请键入
%printenv | less
shell变量的一个例子是历史变量。该变量用于保存多少数量的shell命令,允许用户回滚之前输入的所有命令。键入
%echo $history
shell变量的更多例子
SHELL变量都使用set命令进行设置和显示。可以通过使用unset命令来取消设置。
要显示这些变量的所有值,请键入
%set | less
通常,具有相同名称(忽略大小写)的环境变量和shell变量是不同且独立的,除了可能具有相同的初始值。但是也有例外。
每次shell变量home,user和term被改变,相应的环境变量HOME,USER和TERM会变为相同的值。但是,更改环境变量对相应的shell变量没有影响。
PATH和path都指定命令和程序的搜索目录。两个变量总是表示相同的目录列表,并且更改会自动导致另一个更改。
每次登录到UNIX主机时,系统会在您的主目录中查找初始化文件。这些文件中的信息用于设置您的工作环境。C和TC shell使用两个名为.login和.cshrc的文件(请注意,这两个文件名以点开头)。
在登录时,C shell首先读取.cshrc,然后是.login
.login将设置适用于整个会话的条件,并执行仅在登录时相关的操作。
.cshrc用于每次调用shell时设置条件并执行相关操作。
准则是将环境变量设置在.login文件中,SHELL变量设置在.cshrc文件中。
警告:不要在.cshrc或.login文件中放置运行图形显示(例如Web浏览器)的命令。
例如,要更改保存在历史记录列表中的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
当您键入命令时,您的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)