Linux环境变量,打开的 shell 选项 himBHs 和 hBc
前言全局说明
Linux环境变量 himBHs 和 hBc
一、说明
$- 记录的是当前配置打开的 shell 选项,而 himBH 是其默认值。
二、查看环境变量
2.1 本地执行
echo $-
2.1 查看远程环境变量
ssh qt@127.0.0.1 'echo $-'
127.0.0.1实际是本机回环,但是假设是远程机器的IP,效果是一样的
三、选项说明
h - hashall i - interactive-comments m - monitor B - braceexpand H - history s - 暂未知 c - 暂未知
查看来确认打开状态
set -o | grep -w on
3.1、h - hashall
bash 的 hash 功能,可以实现让某些 command 和 具体路径 绑定在一起。
## 绑定 date 到 /tmp/fakedate 路径 $ hash -p /tmp/fakedate date ## 列出包含 fakedate 绑定关系 $ hash -l | grep fakedate builtin hash -p /tmp/fakedate date ## 执行绑定后的 date $ date -bash: /tmp/fakedate: No such file or directory ## 取消绑定,date 就是默认的输出日期了 $ set +h $ date Sun Jan 19 15:43:18 CST 2020 ## 绑定 路径和date $ set -h $ date -bash: /tmp/fakedate: No such file or directory ## $ hash -d date $ date Sun Jan 19 15:43:53 CST 2020
$ 开头的是用户输入的命令
hash表概述 在 Linux 系统第一次执行外部命令时,hash 缓存表是空的; 这时,系统会先从 PATH 路径下寻找命令,找到后会将路径加入到 Hash 缓存中; 当再次执行此命令时,会直接从 hash 表的路径下执行; 如果存在则直接执行,如果不存在将继续从 PATH 下的路径查找; 因此,hash 表可以提高命令的调用速率。
完整说明:https://blog.csdn.net/weixin_42599558/article/details/116871719
3.2、i - interactive-comments
配置在交互 shell 模式下,是否允许注释。
设置值不能用 set -i ,会报错
## 取消设置,不允许注释 $ set +o interactive-comments $ echo $- hmBH ## 显示一个注释语句,被当成命令 $ #testcomment -bash: #testcomment: command not found ## 设置,允许注释 $ set -o interactive-comments $ echo $- himBH $ set -o | grep -w on | grep interactive-comments interactive-comments on ## 显示一个注释语句,不被执行,什么也不显示 $ #testcomment
3.3、m - monitor mode
打开监控模式,配置是否打开控制 Job control 功能。
Job control 是什么? 即可以控制进程的停止、继续,后台或者前台执行等。
开启 job control 后,如果执行了一个比较耗时的命令,可以按下 CTRL+Z 让它在后台运行:
$ sleep 50 ^Z [1]+ Stopped sleep 50
然后, 可以用 fg 命令将后台运行的任务恢复到前台执行:
$ fg sleep 50 ^C
如果关闭这个选项,就会失去控制 Job 的能力:
$ set +m $ echo $- hiBH $ sleep 50 ^Z ^Z ^C $ fg -bash: fg: no job control
3.4、B - braceexpand
关于括号使用的flag,打开后可以快捷地实现某些效果
快捷输出多个字符串:
$ echo testbraceexpand{1..10} testbraceexpand1 testbraceexpand2 testbraceexpand3 testbraceexpand4 testbraceexpand5 testbraceexpand6 testbraceexpand7 testbraceexpand8 testbraceexpand9 testbraceexpand10 $ set +B $ echo $- himH $ echo testbraceexpand{1..10} testbraceexpand{1..10}
快捷备份:
$ echo $- himH $ cp /tmp/myfile{,.bak} cp: missing destination file operand after '/tmp/myfile{,.bak}' Try 'cp --help' for more information. $ set -B $ echo $- himBH $ cp /tmp/myfile{,.bak} $ ls -l /tmp/myfile* -rw-r--r-- 1 xxx users 3 Jan 19 16:43 myfile -rw-r--r-- 1 xxx users 3 Jan 19 16:43 myfile.bak
3.5、H - history
是否允許用 “感叹号 !+ history number ” 来执行历史命令
!! : 返回并执行最近的一个历史命令
!n : 返回并执行第 n 个历史命令
$ echo $- himBH $ uptime 16:51:00 up 1137 days, 23:01, 1 user, load average: 0.29, 0.38, 0.31 $ !! uptime 16:51:05 up 1137 days, 23:02, 1 user, load average: 0.35, 0.39, 0.31 $ history | grep 59 59 01/19/20 16:47 echo $- $ !59 echo $- himBH
如果关掉 histexpand ,那么 !n 则无法顺利执行了。
$ set +H $ echo $- himB $ !59 -bash: !59: command not found $ !! -bash: !!: command not found
由于 histexpand 打开的时候,“ !” 带特殊含义;
因此 histexpand 打开状态下,“ !” 不能出现在双引号中,
否则会报错 -bash: !": event not found ,具体可戳 《 Linux -bash: !": event not found 》 了解。
3.6、s - 暂未知
3.7、c - 暂未知
四、其他知识
4.1 set 命令
查看: set -o
设置: set -N 或者 set -o Nx
取消: set +N
4.2 -/+ 作用
-:设置值
+:取消设置值
免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。
参考、来源:
https://blog.csdn.net/weixin_44648216/article/details/104062992
https://blog.csdn.net/weixin_44648216/article/details/104059516
https://blog.csdn.net/Jerry00713/article/details/134160949
https://blog.csdn.net/Jerry00713/article/details/134161018?spm=1001.2014.3001.5502
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)