コンピュータが初めて起動したときにUnixパスを設定する方法は?

コンピュータが初めて起動したときにUnixパスを設定する方法は?

私はAppleコンピュータを使用しています。端末を開いて実行すると、echo $PATH環境に現在の「PATH」変数が表示されます。私のパスや他の環境変数に何かを追加すると、プロセスがアクティブな間だけ持続します。

私が知りたいのは、このパスがデフォルト値をどのように取得するかです。 .zshrc(またはbashを使用している場合は.bash *)を見ましたが、パス内のすべてのプログラムをエクスポートできるエントリはありません。この基本的なリストを制御するオペレーティングシステムの役割は何ですかPATH

答え1

login(1)伝統的に、PATHシェルにアイテムを渡す前に設定しますが、OS Xでは異なる考えをする必要があるかもしれません。~/.MacOSX/environment.plistこれを設定できる場所はどこですか(特定のアプリケーションで要求されない限りお勧めできません)。最後に、Appleがpath_helper(8)難読化コマンドを追加したことを確認しました。PATHrc/etc

path_helperMac OS XIのZSHの場合は、以下で無効にして手動で設定してください。PATH私の~/.zshenvファイル。設定したパスで実際に何かを行う必要がある場合、これは理想的ではないかもしれませんpath_helper

答え2

@corleoneが投稿したリンクは、$ PATH環境変数を解釈する方法を示しています。

端末で宣言しても持続しないのは、最終的に終了する一時的なプロセスであるためです。この変数は、シェルの起動時に取得したファイル(通常はドットファイルの1つ)で設定する必要があります。

多くのオペレーティングシステムとは異なり、OSは

特定のディレクトリを含むように$ PATHを更新したい場合は、それを配置するための最良の場所(OS Xの場合)は.bash_profileにあり、これはその特定の変数を設定する他のすべての場所よりも優先されます。何も上書きせずに単に追加したい場合は、.bash_profileに次の行を追加できます。

PATH="$PATH:/path/to/another/bin"

答え3

シェルが起動すると/etc/profilerunが実行され、/usr/libexec/path_helperこのコマンドの出力がeval編集され、パスの初期値が設定されます。man path_helperプログラムが出力を入れる初期ディレクトリのリストを取得する方法を確認してください。

答え4

loginwindow.appユーザーの初期設定を担当します。認証プロセスに渡され、ユーザーが認証されると、呼び出されたloginwindow.appように環境が設定されます(読み取りおよび)。 PATHはカーネルで設定したものと同じです。これはすべてルートで実行されることに注意する必要があります。 GUIセッションを使用している場合、シェルはありません。login -pf USERNAMEman loginman environ/usr/bin:/bin:/usr/sbin:/sbinuser.cs_path = /usr/bin:/bin:/usr/sbin:/sbin

デフォルトでは、Terminal.app はシェルをログインシェルで起動します。login -pf USERNAME(rootとして)実行し、シェルのrcファイルを読みます。 zsh /private/etc/zshenv csh /private/etc/csh.login / usr bash/ libexec/path_helper loginwindow.app`の場合。ksh/private/etc/profile is read. For,is read. For,is read. All useto modify the PATH set by the

関連情報