设置和引用变量

字体: | 打印

  shell 使用环境变量和 shell 变量定义环境。登录 shell 使用环境变量,并将这些变量传递到所有进程和创建的 subshell。仅用户当前的 shell 可以识别 Shell 变量,但这些变量不会被传递到 subshell。

$
  POSIX shell 使用赋值语句和可选的 export 命令设置变量。在所有 shell 中,通过在变量名前加一个货币符号 ($) 来引用变量值。

为变量赋值  


  在 POSIX shell 中,可以为变量赋值(或对变量进行设置)。如有必要,还可以创建变量。使用赋值语句可以完成这两项任务:


name=value



  name 表示变量名,value 表示为变量赋的值。name 和 = 之间或 = 和 value 之间不允许有空格。

  在以下示例中,重新设置 shell 提示符 (PS1),直至其显示:


Ready ==>



  如果 PS1 是 shell 变量,则 subshell(通过键入 sh 创建)不会识别新值。如果导出 PS1,PS1 的值将传递到 subshell:

$ PS1="Ready ==> "        设置 shell 变量 PS1。
Ready ==> sh              键入 subshell 名。
$ exit                    Subshell 现在有缺省提示符;退出到原始 shell。
Ready ==> export PS1      使用 export 设置环境变量。
Ready ==> sh 输入 subshell。
Ready ==>            Subshell 识别 PS1 的新值。

Ready ==> exit            退出 subshell。
Ready ==> PS1="$ "        使用 export 设置环境变量。
$                         返回到正常的工作环境。


引用变量的值(参数替换)  


  三种 shell 都使用参数替换引用变量值。参数替换表示用变量值替换变量名。如果在变量名前加一个货币符号 ($),即发生参数替换。

  例如,在上文我们已了解到如何使用命令 echo $SHELL 确定登录 shell:

$ echo SHELL 由于省略 $,将回显单词 SHELL。
SHELL
$ echo $SHELL 如果加上 $,将回显 SHELL 的值。
/usr/bin/sh

  echo $SHELL 命令使用参数替换。由于变量名前有货币符号 ($),所以 shell 将名为 SHELL 的环境变量值回显在 echo 命令下。