eval "$(/opt/homebrew/bin/brew shellenv)" コマンドは実際に何をしますか?

eval

Homebrewは私たちeval $(/opt/homebrew/bin/brew shellenv)~/.zprofile

私はシェルスクリプトに初めて触れました。私は$varvarという変数を参照することを知っていますが、それはすべてです。パスを入れるとはどういう意味ですか$()?ここに別の主張がありますがshellenv、それはどういう意味ですか?

ベストアンサー1

$()はいコマンドの置き換え。角かっこ内のコマンドを実行し、そのコマンドの出力を返します。

プログラムの出力を変数に入れるのによく使われます。例えば

$ month=$(date +%m)
$ echo $month
02

あるいは、あるプログラムの出力を別のプログラムの引数として使用します。

$ printf '%s\n' $(date +%B)
February

(はい、これは単に実行しても同じ出力が生成されるprintfため、操作された例ですが、どのように動作するかを示しています。)date +%B

角かっこ内のコマンドは、単一のプログラムから長いパイプラインコマンドまで、必要なだけ単純または複雑にすることができます。たとえば、私はDebianシステムから古いカーネルパッケージを削除するためにしばしば次のコマンドを使用します。

apt-get purge $(dlocate -k | grep '6\.0\.0-[245]')

ところで、バックティック(`)を使用するスクリプトも表示できます。これは従来の理由でサポートされていますが、新しいスクリプトでは使用しないでください。

と一緒に使用すると、シェルはeval出力を実行します。この場合、run は/opt/homebrew/bin/brew shellenvたとえば多くのテキストを返し、var=value現在のevalシェルで実行してその変数を希望の値に設定します。

help evalバッシュから:

eval:eval [arg ...]

パラメーターをシェルコマンドとして実行します。

ARGを単一の文字列に結合し、結果をシェルへの入力として使用し、結果コマンドを実行します。

終了ステータス:コマンドの終了ステータスを返すか、コマンドが空の場合は成功を返します。

/opt/homebrew/bin/brew shellenv単独で実行して、どの出力が生成されるかを確認してください。

おすすめ記事