Unix PATH変数とは何ですか?どのように追加しますか?


11

多くのプログラミングチュートリアルでは、ユーザーに何かを追加するように求めていますが、それPATHについては説明していません。PATHコマンドラインを初めて使用するユーザーに説明する既存のリソースはあまり良くありません。

  • Unix PATH変数とは何ですか?

  • プログラムをダウンロードした後、ターミナルでコマンドを実行してみましたcommand not found。これは何と関係がありPATHますか?

  • PATHはこのコマンドで何かを追加した後、うまくいきました:

    export PATH=/path/to/some/bin:$PATH
    

    ...しかし、次にcommand not foundコンピュータを起動したときに、再び取得しました。PATHターミナルを開くたびにそれを維持するにはどうすればよいですか?

  • Gitのようなプログラムgccが既にコンピュータにロードされているかどうかを判断する最良の方法は何ですか?


3
私はSOに関する多くの回答を読みましたが、初心者が理解できる方法でこれらの質問のすべてに答える答えを見つけていません。新しいコマンドラインユーザーをリンクできるものが欲しいのですが。これをコミュニティーwikiとして追加し、大幅な賞金を獲得することが私の希望でした。
Kevin Burke

4
Googleでこの質問を検索すると、50件のヒットが見つかると思います。なぜできないのですか?
trojanfoe

2
そして、これらのリンクのいずれもここにある資格のある質問のSOを指していない場合は、ここに追加する必要があります。私たち SOがGoogleがプログラミングの質問に行く場所になることを望んでいます。

この質問をする際のケビンの動機については、このMSOの投稿をご覧ください。彼はおそらく、この情報がどのように役立つかを明確にするために編集を行うでしょう。
jmort253

1
@ jmort253:まあ、彼はすぐにそれを始める必要があります。4/5近い投票。質問を編集したいので私は閉じませんが、彼はそれをより速くする方がいいです。
マダラのゴースト

回答:


17

UNIXパスは、実行しようとしているプログラムを探すディレクトリのリストである環境変数です。/bin/ls(たとえば、パスを入力することにより)のようなものを実行するために完全なパス名を使用する必要を回避できます/bin

たとえば、パスは次のもので構成されます。

/bin:/usr/bin:/usr/sbin

つまり、コマンドを入力xyzzyすると、現在のリストから最初に見つかったファイルを実行しようとします。

/bin/xyzzy
/usr/bin/xyzzy
/usr/sbin/xyzzy

(それ賢いなら、それは実行可能でないファイルをスキップするかもしれません)。

次のようなコマンドを使用して、パスに物を追加できます。

set PATH=/directory/to/add:$PATH:/low/priority/path

その場所/directory/to/addのパス検索リストの開始時に、そして/low/priority/path最後に。

ただし、これは通常、現在のシェルでのみ変更されます。すべてのシェルで変更を加えたい場合は、$HOME/.profileまたはのような起動ファイルの1つにその行を追加する必要があります/etc/profile。使用する正しいファイルは、シェル自体と起動ファイルの設定方法によって異なります。どこに行くべきかを判断するのは必ずしも容易ではありませんが、ルールは一般的に、使用しているシェルのマンページで説明されています。

通常、次のいずれかを使用してパスにコマンドを見つけることができます

which cmd
whence cmd

cmd実行可能ファイルを見つけるため。たとえば、私のDebianシステムでは、次のトランスクリプトを取得します。

pax> which ls
/bin/ls

pax> which firefox
/usr/bin/firefox

pax> which xyzzy

pax> 

1
この質問はstackoverflowに属していますか?
trojanfoe

@trojanfoe、シェル関連の質問と同じくらい、はい、私はそう思うでしょう。それはあるも、プログラミング言語。

:* nixで使用されているので、区切り記号として使用するように答えを変更しました。Windowsが使用している;(おそらく:既にで意味があるためC:)。
Joachim Sauer

実際、@ Joachim、特定のシェル(UNIX自体ではなく)には特定のディレクトリセパレーターがあると言った方が正しいかもしれませんが、私が頭の中で使用するすべてのものにあなたは正しいです。修正をありがとう、乾杯。

@paxdiablo:はい、私はそれについて考えましたが、私も使用しないUNIXシェルを考えることはできません:(たとえば、Javaでは、path.separator常に:* nixにあります)。
Joachim Sauer

5

とは?

PATH環境変数は、コマンドを入力したときにシェルが検索するディレクトリのコロン区切りのリストです。

設定方法は?

PATH=$PATH:/your/directory
export PATH

ターミナルを開くたびにPATHに留まるようにするにはどうすればよいですか?

前の2行を内部に置き~/.bash_profileます(bashターミナルに使用している場合)。


3

PATHは、UNIXライクなシステムの環境変数です。

パスを設定:

export PATH=$PATH:<your path>

未設定のパス:

unset $PATH

パスを永続的に設定

ホームフォルダーで、[表示]-> [隠しファイルの表示...]を有効にします。ペン.bash_profileファイルをエクスポートする前に、PATH行をエクスポートし、この行を追加します。

PATH=$PATH:<yourpath>

ログアウトして再度ログインする......正常に動作するかどうかを確認してください...よく!それはうまくいくはずです...


1
反対投票して申し訳ありませんが、これは形式と表現が不十分です。太字や過度の省略記号( "...")の過度の使用を避け、完全な文章を書くようにしてください。それは将来そのような反対投票を避けるのに役立つはずです。
Joachim Sauer

1
@Joachim Sauerなぜあなたは答えを編集しないのですか?なぜ反対票を投じるのを好むのですか?

1
@MikroDel:この質問にはすでにより良い、より高品質の回答があり、反対投票はより少ない労力で済みます。これが唯一の答えである場合、私はおそらくそれを編集したでしょう。また、通常は面白くありませんが、反対票は正当なツールです(はい、各質問/回答の横に上矢印下矢印があります)。
Joachim Sauer

1
このコメントの編集または投稿はほぼ同時に行われますが、編集して改善し、Shantanu Banerjeeと他のユーザーを支援してください

@MikroDel:反対投票の背後にある理由を説明してもユーザーは役に立たないのですか?私は私の推論についてはかなり明確であり、品質を向上させるための実践的なヒントを提供してきたと思います。あなたの主張だけが私の反対投票を説明しようとする私の意欲を減らす唯一のものです(そして、私のプロフィールでわかるように、私は過度に反対投票しません)。
Joachim Sauer
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.