Questions tagged «shopt»

7
设置和购物-为什么要两个?
set并且shopt都是控制各种选项的shell内置程序。我经常忘记由哪个命令设置哪些选项,以及设置/取消设置哪些选项(set -o/+o,shopt -s/-u)。为什么会有两个不同的命令看似执行相同的操作(并且具有不同的参数来执行此操作)?有什么简单的方法/助记符来记住哪个选项与哪个命令一起使用?
72 bash  settings  shopt 

5
如何列出当前shell的bash选项?
bash解释器本身具有选项,即 bash手册页的第22-23行: OPTIONS All of the single-character shell options documented in the description of the set builtin command can be used as options when the shell is invoked. In addition, bash interprets the following options when it is invoked: -c ... -i ... -l ... -r ... 我在bash手册页中使用了一些搜索模式,例如: /^\s*set /list …
27 bash  shopt 

3
如何防止不支持的“购物”选项引起我的.bashrc错误?
我在相对异构的环境中工作,其中我可能在不同的HPC节点,VM或我的个人工作站上运行不同版本的Bash。因为我将登录脚本放在了Git仓库中,所以我想全面使用相同.bashrc的命令,而不会出现很多“如果是此主机,则...”类型的混乱情况。 我喜欢 Bash≤4.1的默认行为,该行为会在按下键时扩展cd $SOMEPATH为。在bash 4.2及以上,则需要重新启用此行为,而这并没有变得可用,直到4.2.29。不过,这只是一个例子。另一个可能相关的选项(尽管我不确切知道它的作用)也可能更改了v4.2的默认行为。cd /the/actual/pathTabshopt -s direxpandshoptcomplete_fullquote 但是,direxpand早期版本的Bash无法识别该错误,如果我尝试在shopt -s direxpand中运行.bashrc,则每次我使用较旧的Bash登录到节点时,都会在控制台上显示一条错误消息: -bash: shopt: direxpand: invalid shell option name 我想做的是环绕一个条件,shop -s direxpand以一种健壮的方式在Bash> 4.1上启用该选项,而不会破坏Bash的旧版本(即,不仅仅将错误输出重定向到/dev/null)。

1
在复合命令中设置bash选项
我发现extglob在复合化合物中设置shell选项会导致后续的抗glob失败。是否需要在复合命令之外设置外壳程序选项?在bash手册页中没有看到这样要求的指示。 例如,以下脚本可以正常工作(打印a.0 a.1): #!/bin/bash touch a.0 a.1 \ a.b.0 a.b.1 shopt -s extglob ls "a."!(b*) 但是,如果最后两行作为复合命令执行,则脚本将失败,并出现以下错误: syntax error near unexpected token `(' ` ls "a."!(b*)' 使用4.2到4.4的bash版本以及各种复合命令对此进行了测试: (1)有条件的- if #!/bin/bash touch a.0 a.1 \ a.b.0 a.b.1 if true; then shopt -s extglob ls "a."!(b*) fi (2)大括号- { } #!/bin/bash touch a.0 …
9 bash  shopt 

1
设置shopt extglob的范围限制是什么?和其他选择?
我的非交互式bash shell具有extglob off。我想在命令之前的语句中将其打开,但是我注意到,当shopt -s extglob在一个if .. then .. else块中时,它会以某种方式无法注册。 以下依赖于extglob的命令无效:syntax error near unexpected token '('。 哪里可以extglob设置,为什么有限制呢?这是否适用于其他选项?... GNU bash 4.1.5 这有效: shopt -s extglob if true ;then touch a.bcd; ls a.@(bcd) fi 这将失败: if true ;then shopt -s extglob touch a.bcd; ls a.@(bcd) fi ... line 17: syntax error near unexpected …
8 bash  shopt 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.