SHELL环境变量

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必须用"扩起来, 这是因为某些定制性比较高的系统中可能并没有此环境变量,如果没有此环境变量,如果没有被"扩起来就会报告错误,用"扩起来的就相当于左边是空字符串, 这样就不会报告错误。
  • 字符串的比较既可以使用=也可以使用==