タグ付けされた質問 「shopt」

7
Set and Shopt-なぜ2つなのか?
setそしてshopt、さまざまなオプションを制御両方のシェル組み込みコマンドです。どのコマンドによってどのオプションが設定されるか、どのオプションが設定/設定解除(set -o/+o、shopt -s/-u)するかをよく忘れます。どうやら同じことをしているように見える(そしてそうするために異なる引数を持っている)2つの異なるコマンドがあるのはなぜですか?どのオプションがどのコマンドに対応するかを覚える簡単な方法/ニーモニックはありますか?
72 bash  settings  shopt 

5
現在のシェルのbashのオプションを一覧表示するにはどうすればよいですか?
bashインタープリター自体にはオプションがあります。 bashのmanページの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のmanページで次のようないくつかの検索パターンを使用しました。 /^\s*set /list …
27 bash  shopt 

3
サポートされていない「ショップ」オプションが.bashrcでエラーを発生させないようにするにはどうすればよいですか?
さまざまなバージョンのBashをさまざまなHPCノード、VM、または個人用ワークステーションで実行している可能性がある、比較的異種の環境で作業しています。私はログインスクリプトをGitリポジトリに配置しているので.bashrc、「もしこのホストなら...」タイプの面倒さをあまり使わずに、同じように全面的に使用したいと思います。 私のようなバッシュ≤拡大し4.1のデフォルトの動作cd $SOMEPATHにcd /the/actual/path押したときにTabキーを。バッシュ4.2以上では、あなたがする必要があるだろうshopt -s direxpandし、この動作を再度有効にし、それが利用可能になっていませんでした4.2.29まで。ただし、これはほんの一例です。別の、おそらく関連するshoptオプションcomplete_fullquote(それが何をするのか正確にはわかりませんが)もv4.2でデフォルトの動作を変更した可能性があります。 ただし、direxpand以前のバージョンのBashでは認識されないためshopt -s direxpand、自分のを使用しようとする.bashrcと、古いBashのノードにログインするたびにエラーメッセージがコンソールに出力されます。 -bash: shopt: direxpand: invalid shell option name 私は何をしたいのは、条件付きの周りをラップでshop -s direxpandバッシュの旧バージョン(擦れずに、堅牢な方法でバッシュ> 4.1にそのオプションを有効にするには、すなわち、ちょうどにエラー出力をリダイレクトしません/dev/null)。

1
複合コマンドでのbashオプションの設定
extglob複合化合物内でシェルオプションを設定すると、後続のアンチグロブが失敗することがわかりました。シェルオプションは、複合コマンドの外部で設定する必要がありますか?私はbashのmanページにそのような要件の兆候を見ませんでした。 例として、次のスクリプトは正常に機能します(prints a.0 a.1)。 #!/bin/bash touch a.0 a.1 \ a.b.0 a.b.1 shopt -s extglob ls "a."!(b*) ただし、最後の2行が複合コマンドとして実行されると、スクリプトは次のエラーで失敗します。 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 …
9 bash  shopt 

1
shopt extglobを設定するためのスコープ制限は何ですか?と他のオプション?
私の非インタラクティブbashシェルにはがありextglob offます。コマンドの直前のステートメントでオンにしたいのshopt -s extglobですが、if .. then .. elseブロック内にあるとどういうわけか登録されないことに気づきました。 次のextglob-dependantコマンドは無効です: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 token …
8 bash  shopt 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.