bash中括弧拡張がコマンドに対して機能しないのはなぜですか?

bash中括弧拡張がコマンドに対して機能しないのはなぜですか?

これが機能する理由:

mkdir /dir/test{1,2,3}

そうではありませんか?

{chown httpd,chmod 700} /dir/test1
-bash: {chown: command not found

私のBashバージョンは次のとおりです。GNU bash、バージョン4.2.46(2) - リリース

ベストアンサー1

中かっこ拡張が無効です。支柱の拡張は次のとおりです。言葉シェルに。

単語は引用符なしの空白(デフォルトではタブまたは改行)で区切られた文字列です。文字列は3つの別々の単語で構成され、中括弧{chown httpd,chmod 700}拡張{chmodとして認識されません。http,chmod700}

代わりに、シェルは行を{chownコマンドとして解釈し、引数とともに実行しますhttp,chmod700}/dir/test1

これをテストする最も簡単な方法は次のとおりですecho

$ echo {chown httpd,chmod 700} /dir/test1
{chown httpd,chmod 700} /dir/test1

$ echo {"chown httpd","chmod 700"} /dir/test1
chown httpd chmod 700 /dir/test1

中括弧拡張が機能しても、このコマンドは意味がありません。

2つのコマンドを書くだけです。

chown http /dir/test1
chmod 700  /dir/test1

おすすめ記事