MacOSのPATH
とは何ですか?私はそれを使用してグローバルコマンドラインツールをインストールしましたが、私が見つけた唯一のドキュメントは、それを行うためのチュートリアルであり、何が起こっているのかについての実際の説明はありません。フードの下。また、ウィキペディアで関連するページが見つかりませんでした。
では、PATH
と/etc/paths
と~/.bash_profile
**の違いは何ですか?
たとえば、私のpaths
ファイル、次のように表示されます:
/usr/bin /bin /usr/sbin /sbin /usr/local/bin
しかし、私の~/.bash_profile
、これが表示されます:
# Setting PATH for Python 2.7 # The orginal version is saved in .bash_profile.pysave PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}" export PATH
これはpaths
ファイルへのユーザー固有の追加ですか? 「paths
のすべてのもの、たとえば/usr/bin
?
コメント
回答
1。 PATHの目的は何ですか?
PATH
は環境変数で、コロンで区切られたディレクトリのリストが含まれています。シェルは、コマンドラインで指定した実行可能ファイルを検索します。それらへの明示的なパス(jsdoc
の例のように)。したがって、PATH
に
/usr/bin:/bin:/home/bin
がある場合、名前で呼び出す実行可能ファイルはこれらのディレクトリで検索されます(この順序で)最初に見つかった実行可能ファイルが実行されたものです。
2。 / etc / pathsと〜/ .bash_profile
によるとこの質問の違いは何ですかServerFault 、/etc/paths
は、PATH
をグローバルに(つまり、システム全体で、すべてのユーザーに対して)設定するために使用されますが、~/.bash_profile
は、ユーザーごとの設定を設定するために使用されます(~
はユーザーのホームディレクトリになります)。は、/etc/paths
からグローバルPATH
に追加するか、完全にオーバーライドすることができます。
Forレコード/etc/paths
はMACOSの特性のようです。少なくとも、GNU / Linuxでは見たことがありません。
コメント
回答
PATHの目的は何ですか?
これがシェルはプログラムを検索します。たとえば、ls
と入力すると、/bin
にあるls
というプログラムが実行されます。 Mac OS Xを含むほとんどのシステムのdiv>。シェルは、/bin
がPATH
にあるためにのみそれを見つけることができます。
シェルは、プログラムをPATH
の順序で左から右に検索します。システムに2つのls
プログラムがあり、それらのディレクトリが両方ともPATH
にある場合、リストされているディレクトリに1つが見つかります。最初にPATH
。
/ etc / pathsと〜/ .bash_profile <の違いは何ですか/ p>
/etc/paths
で設定されたパスは、次のPATH
に追加されます。 Mac OSXのすべてのシェルで起動します。
~/.bash_profile
は、起動時にBashによって実行されるいくつかのシェルスクリプトの1つにすぎず、これらのいくつかはBash固有です。したがって、シェルを変更すると、— Mac OSXにはtcsh
とzsh
も同梱されます。たとえば、—に加えられた/etc/bashrc
の変更は、新しいシェルには適用されません。
また、/etc/paths
はシステムレベルの構成ファイルであり、~/.bash_profile
はユーザーごとです。 Macに複数のインタラクティブユーザーを設定している場合は、全員に表示したくないディレクトリを/etc/paths
に追加したくないでしょう。PATH
。同じことが/etc/bashrc
にも当てはまりますが、もちろん、シェルとしてBashを使用するユーザーにのみ適用されます。
PATHと$ PATHおよび$ {PATH}の違いは何ですか?
通常、表示されるのは変数を設定するときに、印章のない変数。FOO=bar
は、FOO
環境変数を文字列bar
。set
と入力すると、シェルにすべての環境変数が表示されます。その場合、印章のない変数も表示されます。
$PATH
と${PATH}
は通常交換可能です。これらは、現在のPATH
変数を展開するようにシェルに指示します。 sインプレースの値。違いは、それらをどこでどのように使用するかに関係しています。例:
$ FOO=bar $ echo $FOO bar $ echo $FOOx $ echo ${FOO}x barx
2番目のecho
コマンドでは、シェルに印刷を要求するため、シェルは何も印刷しません。 FOOx
という変数は存在しません。シェルは存在しない変数を空として扱います。3番目のecho
は中括弧構文を使用しているためです。 、これにより、シェルは、FOO
変数を要求していること、およびx
が直後に印刷する別の文字であることを確認できます。 。
ちなみに、中括弧なしで同じ効果を得る別の方法があります。
$ echo "$FOO"x barx
環境変数は次のように展開されます。二重引用符。引用符はx
を変数展開から分離するため、シェルは正しいことを行います。
私は環境変数を使用します。上記で記述した内容はすべて、これは単なる別の環境変数であるためです。例のテキストははるかに長くなります。
export PATHはどういう意味ですか?いつエクスポートしますか?
上記のFOO
の例をとると、別のプログラムを実行する場合は、 FOO
変数はエクスポートされないため、表示されません。この変数は、その1つのシェルインスタンス内にのみ存在します:
$ echo $FOO bar $ bash $ echo $FOO $ exit $ export FOO $ bash $ echo $FOO bar
すでに使用していたシェルで新しいbash
シェルを最初に実行したとき、FOO
の値を表示してみます。 FOO
がサブプログラムにエクスポートされなかったため、空白になります。次に、2番目のbash
インスタンスを終了してエクスポートし、bash
を再度実行すると、2番目のインスタンスにFOO
。
export
は、サブプログラムにシェルで設定された値を表示させ、使用しない場合に使用します。
通常、シェルスクリプトから一時変数をエクスポートすることはありません。これは、シェルスクリプトからプログラムを実行する方法を変更したくないためです。
私はあなたの他の質問に答えるつもりはありません。あなたは一度に1つの質問だけをすることになっています。漠然と関係しているので、私はこれだけ多く答えました。他のすべては別の質問に属します。
/etc/paths
に関するリンクがあります。