Linuxシェルコマンドの$()
とは何ですか?
例えば:
chmod 777 $(pwd)
POSIXまたはPOSIXのようなシェル(ksh
、bash
、ash
、zsh
、yash
...)では、次のようになります。 _``
_:$()
内のコマンドが実行され、その標準出力に置き換えられます。 $()
が二重引用符で囲まれていない限り、単語分割とファイル名の生成は行われます。したがって
_chmod 777 $(pwd)
_
置き換えられるべきです:
_chmod 777 "$(pwd)"
_
現在の作業ディレクトリパスでの単語分割とファイル名生成を回避する。
またはさらに良い(ディレクトリの名前が変更されている場合に備えて、zshなどの一部のシェルの下を除く):
_chmod 777 "$PWD"
_
_$PWD
_はPOSIXシェルの現在の作業ディレクトリへのパスを保持する特別な変数なので、.
またはさらに良い:
_chmod 777 .
_
現在のディレクトリの_.
_エントリは、そのディレクトリ自体へのハードリンクであるためです。
この$()
は、他のコマンドの内部でコマンドを実行するために使用されます。
chmod 777 $(pwd)
pwd
コマンドは、現在の作業ディレクトリを提供します。したがって、全体が実行されると、pwdの出力はその位置を置き換え、chmod
への引数として機能します。その結果、現在のすべての作業ディレクトリに権限が付与されます777
実稼働環境では絶対に使用しないでください;)。