关于linux profile 文件中如下代码

转: http://kodango.com/explain-shell-default-options

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 

echo $- 结果为:himBH
$-记录着当前设置的shell选项,himBH是默认值,
你可以通过 set 命令来设置或者取消一个选项配置。例如:set -x

i - interactive
包含这个选项说明当前的 shell 是一个交互式的 shell,何为交互式?你输入命令,
shell 解释执行后给你返回结果,我们在 Terminal 下使用的 shell 就是交互式的,
所以 $- 会包含 i 字符。如果我们在一个脚本里面 echo $-,
结果是不会包含 i 的。

H - history expand

history expand 这个很多人都基本上不用,包括我也是。我们知道 Shell 会把我们执行的命令记录下来,
可以通过 history 命令查看,每一行是序号 + 执行的命令。
在 shell 退出时,会将这些信息保存到~/.bash_history 文件中,
当然在启动时也会从该文件中加载,不信删除这个文件再打开一个终端试试。
history expand 就是展开历史列表中的命令,可以通过!感叹号来完成,
例如"!!"返回上最近的一个历史命令,"!n"返回第 n 个历史命令,等等.
多扯一句,在命令行下,不要在双引号号里面用!,这会让 Shell "误以为" 你要执行历史展开.

B - brace expansion
和备份相关
$ cp /your/path/to/file{,.bak}

m - monitor mode
可以控制进程的停止、继续,后台或者前台执行等。正常情况下,在交互式模式下,
该选项默认是打开的,所以再执行一个比较耗时的命令时,你可以按下CTRL+Z 让它在后台运行,
然后可以用 fg 命令将后台运行的任务恢复到前台执行。

h - hashall
不知

${-#*i} 翻译过来是说,从左往右看,删除掉 $- 变量的值中第一个 i 字符以及之前的内容。
与此相对的,还有${-%i*}的写法,%与#号的意义刚好相反,从右往左看,删除掉 $- 变量的值中
最后一个 i 字符以及之后的内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值