今天看/etc/profile中的script,其中有一段是这样:
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null 2>&1
fi
fi
done
不明白其中${-#* }大部分是什么意思,只是测试得知其结果会得到himBH。
哪位大神告知一下,万分感谢!!!
alick 于 2011-09-06 23:23:59发表:
$- 是 bash 中的特殊变量,值为 bash 启动时的选项。
对于 交互式运行的 shell,$- 里面有 i 。
${param#word} :如果 $param 变量的值的前面部分的 含有 word,则把word删去。(匹配的串最短)
所以 ${-#*i} 是将 $- 变量中最前面的(最短的)*i 删去。而 *i 代表 任意个字符加上字母i。
放在脚本中,功能就是如果 bash 是交互式的,则 正常地 source "$i",
如果 bash 非交互,则 source 时的输出信息都不显示出来。