背景简介
Unix系统以其命令行工具和强大的可定制性而闻名。在本篇博客中,我们将探索Unix环境的配置技巧,特别是如何通过修改.profile文件来设置环境变量,并利用参数替换来优化命令行工具的使用。
Unix环境变量的配置
Unix系统中的环境变量是配置用户界面和程序行为的关键。通过设置 PATH
、 CDPATH
、 PS1
、 PS2
等变量,我们可以定义命令提示符、命令搜索路径等。例如,设置 PS1
为 =>
和 PS2
为 ====>
,可以让提示符更加直观。
TERM变量
TERM
变量存储了终端类型的详细信息,这对于全屏命令如vi编辑器至关重要。通常,终端或SSH程序会自动设置此变量,但有时我们可能需要手动指定特定值(如ansi、vt100或xterm),以确保全屏程序正常运行。可以在登录时提示用户输入TERM值,然后根据输入设置该变量。
echo "What terminal are you using (xterm is the default)? \c"
read TERM
if [ -z "$TERM" ]
then
TERM=xterm
fi
export TERM
TZ变量
TZ
变量用于date命令和C标准库函数确定当前时区。用户远程登录时,可能位于不同的时区,因此正确设置TZ变量至关重要。TZ变量通常设置为三字母时区名称后跟数字,指明本地时间与格林威治平均时间的差异。设置时区名称和夏令时的规则也需要考虑。
export TZ=EST5
参数替换的高级技巧
Unix的shell提供了强大的参数替换功能,这些功能可以用于创建更灵活的脚本。参数替换不仅涉及基本的变量赋值,还可以在变量为空或未设置时提供默认值,或者检查并确认所需的环境变量是否全部就绪。
使用默认值
当变量为空时,可以使用 ${parameter:-value}
结构来指定一个默认值。如果变量 EDITOR
未设置,则使用默认值 /bin/vi
。
echo Using editor ${EDITOR:-/bin/vi}
检查并赋值
${parameter:=value}
结构不仅提供了默认值,还将其赋值给变量。如果变量为空,则会使用提供的默认值并赋值给变量。
export PHONEBOOK=${PHONEBOOK:=$HOME/phonebook}
显示错误信息
${parameter:?value}
结构会在变量为空时显示错误信息,并终止命令的执行。这对于调试脚本非常有用。
```sh : ${PHONEBOOK:?"No PHONEBOOK file