惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
阮一峰的网络日志
阮一峰的网络日志
G
Google Developers Blog
J
Java Code Geeks
Blog — PlanetScale
Blog — PlanetScale
大猫的无限游戏
大猫的无限游戏
云风的 BLOG
云风的 BLOG
Vercel News
Vercel News
L
LangChain Blog
Hugging Face - Blog
Hugging Face - Blog
T
The Blog of Author Tim Ferriss
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Stack Overflow Blog
Stack Overflow Blog
P
Proofpoint News Feed
腾讯CDC
博客园_首页
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
M
MIT News - Artificial intelligence
WordPress大学
WordPress大学
D
DataBreaches.Net
Microsoft Security Blog
Microsoft Security Blog
有赞技术团队
有赞技术团队
博客园 - 叶小钗

lvbibir's Blog

shell | 磁盘空间分析脚本 Linux cat 和 tee 命令写入文件 python | 使用 uv 管理你的 python 环境 Claude Code 完整配置指南 windows | mihomo 内核独立部署指南 linux | 磁盘扩容 wsl | 释放长久运行占用的磁盘空间 mysql | 线程上限问题处理 麒麟 7.6 安装谷歌 OTP 认证模块 suse 12sp5 升级 openssh 及 openssl suse 12sp5 部署 mysql 5.7 《谁的青春不迷茫》 docker | centos7 部署 docker vim | 基础配置和使用 windows | rime 输入法 & 雾凇方案 shell | sshpass 批量传输文件及执行命令 wsl | 原生 linux 方式安装 docker nodejs | fnm + pnpm 开发环境配置 wsl | 安装配置 miniconda 虚拟环境 wsl | 自动更新系统代理 wsl | bashrc 环境变量不正确加载的处理方法 wsl | win10 安装 wsl2 troubleshooting | ssh 成功但是 scp 失败 linux | 常用命令总结 docker 部署 piclist shell | 检测网站存活并自动钉钉告警 Zabbix | 监控端口连通性并自动追踪 TCP 路由 windows | 自定义开机快速启动项 windows | miniconda 配置 python 虚拟环境 Zabbix | 监控主机到指定 ip 的流量大小
linux | set 命令详解
lvbibir · 2022-09-28 · via lvbibir's Blog

Bash 有一个内置的 set 命令,可以用来查看、设置、取消 shell 选项

set 设置的选项无法被继承,仅对当前的 bash 环境有效,bash 命令也可以直接使用 set 的单字符选项来开启一个自定义参数的子 bash 环境,比如执行的脚本

  • 查看: echo $- 和 set -o 和 echo ${SHELLOPTS}
  • 设置: set -abefhkmnptuvxBCHP 和 set -o options-name
  • 取消: set +abefhkmnptuvxBCHP 和 set +o options-name

set -set + 设置单字符选项,使用 echo $- 查看当前 shell开启的单字符选项

set -o set +o 设置多字符选项,使用 set -o 查看当前 shell 所有的多字符选项的状态 (开启或关闭)

使用 echo ${SHELLOPTS} 查看当前 shell 开启的长格式选项

所有的短格式选项都可以找到对应的长格式选项,长格式选项多了 emacs、history、ignoreeof、nolog、pipefail、posix、vi。详见 set 命令的 man 手册

例如 set -Bset -o braceexpand 是等效的,注意这里的设置和取消有点反常识:设置用 -,关闭反而是用 +

[root@lvbibir ~]# echo $-
himBH

# set + 方式去除B选项,相应的 set -o 中的 braceexpand 选项也关闭了
[root@lvbibir ~]# set +B
[root@lvbibir ~]# echo $-
himH
[root@lvbibir ~]# set -o | grep braceexpand
braceexpand     off

# set -o 开启 braceexpand 选项,相应的 echo $- 中的 B 选项也开启了
[root@lvbibir ~]# set -o braceexpand
[root@lvbibir ~]# echo $-
himBH
[root@lvbibir ~]# set -o | grep braceexpand
braceexpand     on

以上