すべてのターミナルセッションで変更を使用できるようにPATHを変更するにはどうすればよいですか


53

検索パスを検索するディレクトリを追加したい。PATH環境変数を変更する必要があることを知っています。ただし、変更を永続的にして、開いているすべてのターミナル(bash)ウィンドウに対して常に有効になるようにします。

https://help.ubuntu.com/community/EnvironmentVariablesには、混乱を招き、競合する可能性のある情報が多数あります。

Ubuntu 10.04を使用しています。に追加/usr/local/fooしたいとしますPATH。どのファイル(.bashrc.profile.bash_login、等...)私は修正しなければならないもののように新しい行(複数可)になりますか?

回答:


70

次のコマンドは、現在のパスにパスを追加します。

export PATH=$PATH:/my/custom/path

セットアップで毎回このコマンドを実行したい場合、それを配置できる場所がいくつかあります。ログインすると、次のスクリプトがこの順序で実行されます。

/etc/profile      (which starts by loading everything in /etc/profile.d)
~/.profile        (which starts by loading ~/.bashrc if you are running bash)

ノート

  • ~/.profile 場合にのみロードされ、~/.bash_profileそして~/.bash_login存在しません。そうでなければ、少なくともbashが代わりにそれらをロードします。.profilebash固有のスクリプトではなく、使用することをお勧めします。したがって、これらの試行で作成した場合は.bash_login今すぐ削除してください。

  • ~/.bashrc対話型セッションを実行している場合にのみロードされます。(実際に何かを入力できるプロンプトのあるもの)。

  • ~/.bashrc新しい端末を開くたびに何度もロードされます。したがって、gnome-terminalの新しいタブ、新しい仮想ターミナルなどです。したがって、再度ログインしなくても.bashrc、新しいシェルを開くたびにロードされます(したがって、環境がリセットされます)。

  • by風のようなものは本当に入るべきです.profile(そうでなければ動作しません;-)

  • パスのようなもの.profileは、対話型セッションの外で機能させる場合に使用する必要があります。(GNOMEでAlt+ を押したときなどF2


.profileに追加する必要がある要求されたエクスポート行を含めるように更新する場合、これを回答としてマークします。
ジョシュアフラナガン

これは、コンソールログイン(たとえば、ssh、またはCtrl + Alt + Fxでアクセス可能な仮想端末)に対してのみ有効でした。最近、/ etc / gdm / Xsessionが〜/ .profileをソースとすることを知りませんでした。きちんとした!
マリウスゲドミナス

ええ、私は/ etc / gdm / Xsessionや〜/ .Xprofileについては特に言及しませんでした。起動時にグラフィカルプログラムを起動するより良い方法があるからです。
ラルフ

1
この回答をより包括的にするには、〜/ .profileのソースに関するMattHのコメントを追加して、ログオフ/オンサイクルなしで変更を有効にしてください。
マットウィルキー

1
@schwiz:~/.profile各端末で実行されるのではなく、デスクトップセッションの開始時に実行されます。すべての端末で実行されるものは~/.bashrc
MestreLion

13

変更して動作するようになりました ~/.profile

〜/ binをパスに追加するのは悪い例でした。ディレクトリが存在する場合、自動的にそれを行う〜/ .profileのコードが既に存在するためです。

今後のすべてのセッションのパスにusr / local / fooディレクトリを追加するには、.profileの最後に次の行を追加/編集します。

export PATH=$PATH:/usr/local/foo

ただし、これを有効にするには、ログアウトして再度ログインする必要がありました(単にターミナルウィンドウを閉じて新しいウィンドウを開くだけでは機能しませんでした)。


4
それを確認しexport PATH="$PATH:/usr/foo"、場合にあなたがこれまでにスペースやその他の特殊文字を持っています$PATH
ジル 'SO-悪であるのをやめる

3
あなたは次のように入力してログアウトせずに現在の環境をリロードすることができます「〜/ .profileに」
マット・H

1
@MattH:いいえ、できません。~/.profile特定の端末をソースとする場合、その端末のみに
-MestreLion

@MestreLion-あなたは正しい。私は現在の端末の利便性のために言及していました。それを追加するのを忘れました。
マットH

既にPATHに何かがある場合はどうなりますか?WindowsでPATHSが機能するように追加できますか?たとえば、私はPATH="$HOME/bin:$HOME/.local/bin:$PATH"すでに持っています。
ガブリエルフェア


3

パスを/etc/environmentに追加できますが、シェルの展開は機能しないことに注意してください。変数は入力した文字通りに設定されます。


2つの方法(.profileにexportコマンドを追加し、etc / environmentのPATHにフルパス名を追加する)のうち、どちらを優先する必要がありますか?
ローハンバティア

2

ディレクトリ.bashrc内のファイルを変更できます$HOME

このファイルの最後に、次の行を追加します。

export PATH="$HOME/directory_to_include_in_path/:$PATH"

次の行を含めて、ディレクトリ.profile内のファイルを変更することもできます$HOME

PATH="$HOME/directory_to_include_in_path/:$PATH"

これは私のために働いた。


2
私は、これが他の回答に何を追加するかわかりません。
ザンナ

変更がターミナルウィンドウに影響する場合、これは正解です。変更.profileは、ターミナルウィンドウでは効果がありません。
マルクスレア

0

ohmyzshがある場合は、ターミナルを介してホームディレクトリに移動し、次のように入力します。

nano .zshrc

ファイルの最後に入力します

export PATH = "$ HOME / directory_to_include_in_path /:$ PATH"

最後に端末を再起動します。私のために働いた。これがお役に立てば幸いです。


-3
Going through the basics, I will suggest the following steps:
1. It's recommended to set environment variables in /etc/environment
2. Open the file as superuser in an editor as it's a read only file e.g.     gedit:
gksu gedit /etc/environment
3. System will need password to open it in editable mode. Enter your superuser password and get file opened in a new gedit window. 
4. Add new line at the end of file with 
export PATH=$PATH:/usr/local/foo
5. Save and close the window. It will get command back to terminal.
6. Refresh the environment by running the following command: 
. /etc/environment
7. You may check by executing the following command:
 echo $PATH

これは誤りであり、機能しません。パラメーターの拡張は実行されません/etc/environment
-Zanna
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.