在 OS X 中将 shopt -s nocaseglob 设置恢复为默认值

在 OS X 中将 shopt -s nocaseglob 设置恢复为默认值

在尝试使 Bash for OSX TAB-Auto-Completion 不区分大小写时,我按照建议运行以下命令:

shopt -s nocaseglob
bind 'set completion-ignore-case on'

如何将上述设置恢复为 OS X 默认设置?

答案1

您是说您在脚本或某个点文件(.bash_profile等)中添加了这些命令,还是只是在终端本身中运行了这些命令?

如果您刚刚在终端中运行了命令,只需启动一个新会话,默认设置就会恢复。打开一个新的终端选项卡或窗口,看看正常功能是否恢复,应该是的。

这些设置不应影响整个系统,除非它们在每个会话加载时自动加载到文件中,在这种情况下,您可以简单地从您的.bash_profile或最初添加该条目的地方删除该条目。

.bash_profile您可以通过执行sudo -sbecome 来仔细检查设置是否自动加载到您的系统中root,此时root's点文件将被加载,这些文件优先于前一个用户。如果它以 root 身份正常工作,请深入研究您自己的~/.bash_profile~/.bashrc并删除这些命令/设置。下次加载 shell 会话时,应该会恢复默认功能。

答案2

第一个解决方案
为了恢复你的情况必须知道前一个。
命令bindshopt是如此舒适在他们提出的几个选项中,有一个(-p对于第一个和-v第二个)给出了以几乎可直接使用的格式输出以恢复它们

shopt -p   | grep nocaseglob               # shopt -u nocaseglob
bind  -v   | grep completion-ignore-case   # set completion-ignore-case off

输出结果在符号后面报告#
一旦您知道了起始值,就可以创建几个别名,将其放入忽略更多IgnoreGo)并从中出来(IgnoreExit):

alias IgnoreGo="shopt -s nocaseglob; bind 'set completion-ignore-case on'"
alias IgnoreExit="shopt -u nocaseglob; bind 'set completion-ignore-case off'"

你可以把这个别名和你的配置 shell 的其他别名放在一起(通常在~/.bash_aliases 或中~/.bashrc),并在需要时使用。问题是那些人是盲目的,他们看不到你的 shell 的实际情况。

更好的解决方案
为了让这一切独立于您对这些变量值的了解,并且稍微复杂一点,您可以创建一个函数(Store)来创建一个别名(ReStore)来返回,无论最初的情况是什么。

 Store(){ alias ReStore="$(shopt -p|grep nocaseglob); \
          bind '$(bind -v|grep completion-ignore-case)'"; }

甚至可以将其写入 shell 的配置文件中(见上文)。每次使用时,Store您都会冻结实际情况,然后ReStore使用时重新建立上一次冻结
请注意, 必须\是行的最后一个字符,以便将命令以更易读的格式分成两行。

笔记
在我的系统上,要完成一个命令(例如使用 进行导航cd),只需提供 来bind 'set completion-ignore-case on'启用忽略大小写,即使nocaseglob是也是如此offnocaseglob路径名扩展需要 on。 它甚至存在nocasematch于模式中。help bash阅读更多...

命令帮助
命令bindshopt是 shell 内置的。这意味着,要向手册询问它们的用法,您需要使用help而不是man
要获得仅供人类阅读的输出,您可以使用

shopt    | grep nocaseglob               # nocaseglob      on 
bind -V  | grep completion-ignore-case   # completion-ignore-case is set to `off'

答案3

正如所读Bash 手册 # 4.3.2 内置 Shopt,这是启用/禁用值的方法shopt

-s→ 启用(设置)每个 optname。

-u→ 禁用(取消设置)每个 optname。

类似地,你可以completion-ignore-case使用以下命令禁用该选项:

bind 'set completion-ignore-case off'

相关内容