对话 UNIX:第 2 部分: 做得多不如做得巧( 五 )


设置环境变量与设置 Shell 变量的方法相同 。然而 , 您必须导出该变量 , 以使得它全局可用:
$ MYVARIABLE=$HOME/projectX
$ export TMPDIR=/tmp/projectX
前一个命令设置了名为 $MYVARIABLE 的 Shell 变量 。(开头的美元符号是 Shell 提示符 。您在设置变量时 , 不用提供这个 $ 符号 。然而 , 当您使用这个变量时 , 必须使用美元符号 , 比如 $MYVARIABLE 。)$MYVARIABLE 仅对 Shell 是可见的 , 因为没有将其导出 。要查看所有 Shell 变量的列表 , 可以输入 set 。set 的输出包括环境变量 , 因为它们对 Shell 来说也是可用的 。
在后面的一个命令中 , 设置并导出了 $TMPDIR , 因此它对于从 Shell 中启动的所有应用程序都是可用的 。GNU Compiler Collection (GCC) 编译器是一个使用 $TMPDIR 的应用程序 。$TMPDIR 中所存储的值表示 GCC 用来存放生成的临时文件的位置 。
如果您要删除一个环境变量 , 只需输入 unset 加上变量名即可 , 如清单 8 所示 。
清单 8. 删除环境变量
$ set
HOME=/Users/strike
MYVARIABLE=/Users/strike/projectX
TMPDIR=/tmp/projectX
...
$ unset MYVARIABLE TMPDIR
$ set
HOME=/Users/strike
....
别名和启动文件
前面的部分主要关注的是如何减少在命令行中的输入 。当然 , 还有许多内容需要学习 , 因为 Shell 环境非常丰富 。然而请记住 , 功能越强大 , 生产能力就越大(要对蜘蛛侠说声抱歉 , 因为修改了原话) 。
为了保留以前输入的内容和保存以前的所有设置 , Unix Shell 分别提供了别名和启动文件 。别名 是您所创建的快捷方法 。每次 Shell 启动时都会读取启动文件 , 这是保存(和共享)所有 Shell 设置的理想的地方 , 如 Shell 变量(选项)、环境变量和别名 。
别名是一个简短的序列 , 您可以使用它来代替一个较长的命令 。您可以把别名看作是一个命令行的缩写 。无需输入:
$ find /home/joe -type f -name '*.txt' -print | xargs grep -l "Monthly Report"
在命令提示符处 , 您可以输入已经创建的别名:
$ findreports
Shell 减少了工作的复杂程度 , 它会将 findreports 替换成其扩展形式 。要创建 findreports 别名 , 可以输入:
alias findreports='find $HOME -type f -name "*.txt" -print |
 xargs grep -l "Monthly Report"'
必须使用单引号确定每个别名的界限 。如果您需要在别名中使用引号 , 那么可以使用双引号 。Z Shell 别名可以包含许多 Shell 基本单位 , 包括变量、管道、重定向、其他别名和其他 Shell 操作数 , 如清单 9 所示 。
清单 9. Z Shell 基本单位
【对话 UNIX:第 2 部分: 做得多不如做得巧】$ alias ll='/bin/ls -l'
$ ll -d 2002*
drwxrwxr-x 2 www-datawww-data4096 Jan 16 2002 2002-02
drwxrwxr-x 2 www-datawww-data4096 Jan 22 2002 2002-03
drwxrwxr-x 2 www-datawww-data4096 Apr 15 2002 2002-04
drwxrwxr-x 2 www-datawww-data4096 Apr 19 2002 2002-05
...
$ alias lt='ll -t'
$ lt -d 2002*
drwxrwxr-x 2 www-data www-data 4096 Apr 19 2002 2002-05
drwxrwxr-x 2 www-data www-data 4096 Apr 15 2002 2002-04
drwxrwxr-x 2 www-data www-data 4096 Jan 22 2002 2002-03
drwxrwxr-x 2 www-data www-data 4096 Jan 16 2002 2002-02
$ alias m='pinky | grep mstreicher'
$ m
mstreicher Martin Streicher ...
$ alias snap='pinky >> ~/.pinky'
$ snap
$ snap
$ cat ~/.pinky
LoginNameTTY IdleWhen Where
mstreicher Martin Streicherpts/0Jun 18 16:40 cpe-071-065-224-025.nc.res.rr.com
LoginNameTTY IdleWhen Where
mstreicher Martin Streicherpts/0Jun 18 16:40 cpe-071-065-224-025.nc.res.rr.com

推荐阅读