shell环境设置方法纪要

我们从下面这段脚本说起。

#!/usr/bin/env bash
set -e -x  
source bosh-softlayer-tools/ci/tasks/utils.sh

check_param deploy_name  
check_param data_center_name  
check_param private_vlan_id  
check_param public_vlan_id

deployment_dir="${PWD}/deployment"  
mkdir -p $deployment_dir  

首先是env和set命令。env命令可以打印环境变量,也可以用env来执行程序。这里就是使用env执行bash解决在不同的系统上找不到脚本解释器(bash)的兼容性问题。因为在不同的系统下,脚本解释器可能在不同的目录下。通过#!/usr/bin/env bash能够让脚本能够在不同的系统上成功执行。

而set命令是shell内建的命令,无需去查询它的位置( in /bin or /usr/bin)。和env类似,set命令可以打印出shell变量。shell变量与环境变量的区别在于环境变量是能被子shell或者进程继承的变量,shell只能当前shell本地访问,并且shell变量包含着环境变量。而-e -x 参数的意思是:当执行错误时立即退出,并且当执行时先将执行路径打印以便调试。

  • -e Exit immediately if a command exits with a non-zero status.
  • -x Print command traces before executing command.

    set-x-test

上图是在set -x环境下的ls命令的执行结果,能够将+ ls --color=auto -ln打印出来。在这个模式下能将这些注释信息都打印出来。

source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。所以bosh-softlayer-tools/ci/tasks/utils.sh里的定义的内容能够立即使用。比如check_param函数能够坚持传入sh的参数是否存在。

最后两条命令就是工作目录的设置。