「env」出力にFPATHがリストされていないのはなぜですか?

「env」出力にFPATHがリストされていないのはなぜですか?

(MacOS上で)実行zsh中で、今学んだ。$fpath。いつものようにそれが私の環境に参加していることを確認するために入力しましたが、env驚くほどそこにはありませんでした!ただし、$FPATH(および$fpath)は次のように定義されます。

% echo $fpath
/usr/local/share/zsh/site-functions /usr/share/zsh/site-functions /usr/share/zsh/5.9/functions

% echo $FPATH
/usr/local/share/zsh/site-functions:/usr/share/zsh/site-functions:/usr/share/zsh/5.9/functions

出力される変数は次のとおりですenv

% env | sort | cut -d '=' -f 1
HOME
HOMEBREW_CELLAR
HOMEBREW_PREFIX
HOMEBREW_REPOSITORY
INFOPATH
LANG
LC_CTYPE
LOGNAME
MANPATH
OLDPWD
PATH
PWD
SHELL
SHLVL
SSH_AUTH_SOCK
TERM
TERM_PROGRAM
TERM_PROGRAM_VERSION
TERM_SESSION_ID
TMPDIR
USER
XPC_FLAGS
XPC_SERVICE_NAME
_
__CFBundleIdentifier

私はいつもenvBashで環境変数を制御することに頼ってきましたが、明らかにそれが最善の選択ではありません(少なくともそれ以上ではありません)。

別のコマンドを使用する必要がありますか?またはリストを作成する方法みんな現在のユーザー/セッションは環境変数にアクセスできますか?

答え1

使用される変数シェルを通して、ここで扱うように、or PROMPT、または、HISTFILEまたははIFS環境変数である必要はありません。つまり、 を使用して環境にエクスポートする必要はありませんexport

エクスポートされた変数は、シェルで実行されている外部ユーティリティ(ユーティリティなど)に表示されますが、エクスポートされていない変数はこれらのenvユーティリティには表示されません。

シェルで使用される変数は、その値がすでにシェルからアクセス可能であるため、環境にエクスポートする必要はありません。また、外部ユーティリティがその値にアクセスできるようにその値をエクスポートする必要はありません。これは、これらのプロセスの環境を汚染し、まれな場合に干渉を引き起こす可能性があるためです。

みんな見たいならシェル変数set、パラメータなしで組み込みユーティリティを使用できます。

関連情報