for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then #判断是否可读
if [ "${-#*i}" != "$-" ]; then #判断脚本是否是交互式脚本
. "$i"
else
. "$i" >/dev/null
fi
fi
done
#条件为真时,执行交互式,加载
#条件为假时,执行非交互式,并丢进黑洞,
#目的是防止有些执行某些程序(如scp),需要登录到远端机器,读取远端机器的环境变量
有输出,导致程序中断!
"${-#*i}" #这个是字符串截取命令,截取出来是mBH
$- #结果是himBH
#himBH是交互式
#mBH是非交互式
Linux下判断执行的命令或脚本是否是交互式Linux下/etc/profile脚本解释for i in /etc/profile.d/*.sh ; do if [ -r "$i" ]; then #判断是否可读 if [ "${-#*i}" != "$-" ]; then #判断脚本是否是交互式脚本 . "$i" ...