SHELL
环境变量记录用户登录时候所使用的Shell是哪个。 并不是记录当前运行在哪个Shell中。
绝大多数操作系统的登录Shell是/bin/bash
。
一个操作系统中可以安装很多的Shell, 但是登录时候使用的Shell只能使用其中一个, 很多系统的登录Shell是精简的,这是因为登录的时候要执行很多的Shell脚本,如果速度不够快的话,会影响启动速度,用户体验不够好。 有时候也会考虑这个Shell的大小,太大的话影响下载速度。比如,AlpineLinux这个系统默认使用/bin/ash
,因为这个Shell非常小巧。
下面是一段判断当前系统的用户用哪种Shell登录的代码:
if [ "$SHELL" = '/bin/bash' ] ; then
elif [ "$SHELL" = '/bin/zsh' ] ; then
fi
这里特别要注意的是:
$SHELL
必须用"
扩起来, 这是因为某些定制性比较高的系统中可能并没有此环境变量,如果没有此环境变量,如果没有被"
扩起来就会报告错误,用"
扩起来的就相当于左边是空字符串, 这样就不会报告错误。=
也可以使用==