PATHにディレクトリを追加する方法は?


731

$PATHUbuntuにディレクトリを追加し、変更を永続的にするにはどうすればよいですか?


2
help.ubuntu.com/community/EnvironmentVariables知っておくべきことがすべてあります。ここでの入力の多くが間違っているか、少なくともメソッドが提案されていないことがわかりました。これは、あなたがそれをしている理由に基づいて環境変数を変更する場所と、すべてをめちゃくちゃにすることなく正確に行う方法を見つけることができる素晴らしい情報です(前述の悪いアドバイスのいくつかに従ったように)。長く、そしてすべての魚に感謝します!
バス42

回答:


456

〜/ .profileを使用して$ PATHを設定する

設定されたパス.bash_profileは、bashログインシェル(bash -l)でのみ設定されます。パスを入力.profileすると、デスクトップセッション全体で使用できるようになります。つまり、メタシティでもそれを使用します。

~/.profile

if [ -d "$HOME/bin" ] ; then
  PATH="$PATH:$HOME/bin"
fi

ところで、プロセスのPATH変数を確認するには、その環境を調べます/proc/[pid]/environ([pid]をからの番号に置き換えますps axf)。例えば、使用grep -z "^PATH" /proc/[pid]/environ

注意:

bashログインシェルは.profile、どちらか.bash_profileまたは.bash_login存在する場合、解析しません。からman bash

〜/ .bash_profile、〜/ .bash_login、および〜/ .profileをこの順序で検索し、存在し、読み取り可能な最初のコマンドからコマンドを読み取り、実行します。

、または対話型の非ログインシェルについては、以下回答を参照してください.pam_environment。または、ディスプレイマネージャーセッションに.bashrcスクリプトを挿入し/etc/profile.d/たり/etc/X11/Xsession.d/、影響を与えるために使用したりして、すべてのユーザーに対してグローバルに値を設定してください。


5
クール、それは働いた。bin dirを自動で追加する場所を見たので、スクリプトの代わりにそれを使用しました。TY。
justingrif

5
Xbunutuでは、.profileは実行されないため、.bashrcに入れて動作します。
くまら

13
このドキュメントは非常によくできています:環境変数に関する公式ドキュメント。読むことを検討してください(環境変数に値を追加するためにルールの最後のバージョンに更新されると言うのではありません)。
ミケーレ

3
.profileのどこにパスを追加しますか??
Vineet Kaushik

3
どこに追加のパス部分を追加するのかまだわかりません。Android SDKをパスに追加する必要があります... PATH="$HOME/bin:$PATH"それに追加しますか?
ジェイミーハッバー16

303

.bashrcホームディレクトリで編集し、次の行を追加します。

export PATH="/path/to/dir:$PATH"

.bashrc変更を有効にするには、ソースまたはログアウト/ログイン(またはターミナルの再起動)を行う必要があります。をソースするには.bashrc、単に入力します

$ source ~/.bashrc

3
どのように「ソース.bashrc」しますか?「ターミナルを再起動する」方法は?
同型

3
bashでは、単に 'です。.bashrc '
オフィディアン

1
私はあなたがあなたのホームディレクトリにいると仮定していました。それはあなたが編集したい.bashrcがある場所だからです。
オフィディアン

21
.bashrc環境変数を設定する適切な場所ではありません。彼らはに行くべき.profile.pam_environment。参照してくださいmywiki.wooledge.org/DotFiles
geirha

4
@LaoTzu . .bashrcnot .bashrc:)またはsource .bashrcそのことについて
-Znarkus

120

すべてのユーザーに適用される永続的なシステム全体の環境変数を定義する推奨場所は、次の場所です。

/etc/environment

(デフォルトPATHが定義されている場所です)

これは、デスクトップまたはコンソール、gnome-terminalまたはTTY、rain or shineで動作します;)

  • 編集するには、Alt+ F2を押して次を入力します。

    gksudo gedit /etc/environment
    

    (またはsudo、お気に入りのテキストエディターでファイルを開きます)

変更を有効にするには、を実行し. /etc/environmentます。このファイルは単純なスクリプトであるため、実行され、新しいパスがPATH環境変数に割り当てられます。envを実行PATHして、リストの値を確認します。

関連する:


6
変更を有効にするには再起動する必要があります
リー

2
これはまさに私が必要としたものです。vagrantを介して使い捨てのVMイメージをプロビジョニングし、ノードとnpmをパスに追加する必要がありました。
オースティンプレイ14年

7
変更を有効にするには、を実行します。/ etc / environement(はい、ドット、スペース、/ etc / environment)。このファイルは単純なスクリプトであるため、実行され、PATH環境変数に新しいパスが割り当てられます。envを実行し、リスト内のPATH値を確認するには。
WindRider

1
source /etc/environment変更を再読み込みするために実行する必要がありました
-JohnnyAW

@JohnnyAW:ソースは最初のドットと同等です。たとえば、en.wikipedia.org /wiki/Source_(command )を参照してください。
ローランドサラザン

58

Ubuntuの標準的な方法は次のとおりだと思います。

  • 下に新しいファイルを作成します /etc/profile.d/

    sudo vi /etc/profile.d/SCRIPT_NAME.sh
    
  • そこに追加:

    export PATH="YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH"
    
  • 実行許可を与える

    sudo chmod a+x /etc/profile.d/SCRIPT_NAME.sh
    

20
通常、カスタムパスを先頭ではなくPATHの末尾に追加する方が安全です。これにより、システムコマンドを誤ってプログラム(または他の誰かの悪意のあるプログラム)に置き換えることを防ぎます。これにより、他の誰かがシステムで作業している(またはアドバイスを与えている)ときの混乱を避け、「置換」したコマンドから予期しない結果が得られます。
ジョー

47

GUIに慣れている完全な初心者(私と同じ)の場合:

  1. $HOMEフォルダーを開きます。
  2. [表示][ 隠しファイル表示]に移動するか、Ctrl+を押しHます。
  3. 右クリックして.profile、[ テキストエディター開く ]をクリックします。
  4. 一番下までスクロールしてを追加しPATH="$PATH:/my/path/foo"ます。
  5. セーブ。
  6. ログアウトしてから再度ログインし、変更を適用します(Ubuntuを実際にロードします.profile)。

4
.profileファイルを編集することはお勧めしません。この方法を使用して、ファイル.pam_environmentを編集することもできます。help.ubuntu.com/ community
PulsarBlow

@PulsarBlowに感謝します!:私は正確違いといえ利益何本当にわからないんだけど...これは、関連するセクションへの直接URLですhelp.ubuntu.com/community/...
DAIN

1
この回答により、すべてのパスが上書きされるため、システムがログインを停止しました。Ubuntu 16.04を使用します。
フリスベリア

1
@Frisbetarian $PATH:既存のPATH定義を含むビットを必ず追加する必要があります
-dain

@dain:あなたのコメントが私の命を救った!
パイセル

46

特定のユーザーのみが使用できる永続的な環境変数の場合。Ubuntuの公式ドキュメントを強くお勧めします。

https://help.ubuntu.com/community/EnvironmentVariables

上記のドキュメントを参照して、次の方法でAndroid SDKパスツールをセットアップしました。

  1. ~/.pam_environmentホームディレクトリにファイルを作成しています。
  2. 内容はですPATH DEFAULT=${PATH}:~/android-sdk-linux/tools
  3. コロン(:)でパスを区切ることにより、追加のカスタムユーザーパスを追加できます。
  4. これには再ログインが必要です。つまり、ログアウトしてからデスクトップ環境に再度ログインする必要があります。

1
これが最良の答えです。
パウロコギー

26

その行を~/.bashrcファイルに入れます。

ターミナルを開くたびに取得されます

EDIT:(あなたが打ったときなど、すべてのシェルに適用される、より一般的な設定のために、以下のコメントをもとにAlt- F2ユニティに)あなたに行を追加し、~/.profileファイル。ただし、PATHターミナルを開くとパスが環境に2回追加されるため、おそらく両方を行うべきではありません。


1
実際には、$HOME/.profile個人設定または/etc/profileすべてのユーザーのいずれかにパスを設定すると思いました。ただし、bashにのみ必要な場合は、どちらでも機能すると思います。
マーティフライド

1
に設定すると~/.bashrc、開いているターミナルでのみ使用可能になります。たとえば、Alt + F2を押してそのディレクトリからコマンドを実行しようとしても、見つかりません。~/.profileまたは~/.pam_environmentに設定すると、gnomeセッション(または使用するDE)がそれを継承します。PATHを~/.bashrc追加することには、別の対話型bashシェルから対話的にbashを開いたり実行したりすると、複数回追加されるという欠点もあります。
ガイラ

2
私はしばらくこれを実際に検討していませんでしたので、検索しましたが、パスを設定する方法は少なくとも95種類あり、そのほとんどがここで説明されています。どちらが最適かはわかりませんでした。~/.profileしかし、私は個人的な道に正しいと思います。Ubuntuが~/binディレクトリを追加する場所です。そして、私はいくつかの方法について少し誇張したことを認めます-ほんの少し。
マーティフライド

1
@MartyFried、はい、freenodeの#bashでボットを引用します:«インターネット上の圧倒的多数のbashスクリプト、コード、チュートリアル、およびガイドはがらくたです。チョウザメは楽観主義者でした。»Google for bashの問題を使用すると、良い解決策を見つける前に、多くの半効な解決策を見つけることができます。ああ、私~/.profileもこの場合に行きます。
ガイラ

1
@geirha-インターネット上の一般的なガイドのほとんどはおそらくがらくたであることに同意します。特に、ディストリビューションやバージョンが異なる場合でも異なる方法で動作するため、Linuxは特にそうです。通常は機能するものに要約されますが、ほとんどの人は、機能するものが単に機能するものであり、必ずしも適切であるとは限らず、常に機能するものであることを認識していません。私は多くの方法のうち実際に正しいものを見つけようとします。なぜなら、私は物事を複数回行うのが嫌いだからです-しかし、それは必ずしも簡単ではありません。:)
マーティフライド

15

システム全体に設定するには、行export PATH=/path/you're/adding:$PATHの最後に行を追加します/etc/profile

ログインしたユーザーのみにディレクトリを追加するには、同じ行をに追加します~/.bash_profile


14

これを.bashrcに追加しても機能しますが、パス変数を設定するより伝統的な方法は、次の行を追加することにより.bash_profileにあると思います。

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

このスレッドによると、Ubuntuの動作はRedHatやクローンとは若干異なるようです。


1
.bash_profileがありません。作成する必要がありますか?
justingrif

7
持っている場合は.bashrc.bashrc代わりに差し込んでください。UbuntuのGUI端末はログインシェルで.bash_profileはないため、実行されません。

1
GUIシェルを実行していません。しかし、上記のスレッドからは、.bashrcは問題なく機能するように見えます。
justingrif

2
シェルがログインシェルの場合、両方とも機能します。しかし、Ubuntuマシンの1つで.bash_profileアプローチを試してみましたが、gnomeセッションを再起動した後でも、.bash_profileを取得しませんでした。だから、これを.bashrcに入れることは、おそらくUbuntuを使う方法だと思います。
3dinfluence 2009

3
@justingrifいいえ、必要ありません.bash_profile。bashが見つからない場合.bash_profile(インタラクティブにログインした場合)、.profile代わりにそれを探して使用します。デフォルトでは、あなたが持っているだろう.profile.bashrcUbuntuのインチ そして.profile、pam_envを無視した場合に環境変数を設定する正しい場所です。
ガイラ


8
sudo vi /etc/profile.d/SCRIPT_NAME.sh

そこに追加

export PATH=YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH

2
sudo nano /etc/profile.d/SCRIPT_NAME.sh初心者にとっては簡単です。
同型

1
初心者にとっては、gksu gedit /etc/profile.d/SCRIPT_NAME.shさらに簡単です。
-fouric

6

BASHスクリプトのフォルダーを「インストール」するたびに$HOME/bin、Ubuntuの最新バージョンのほとんどの.profileファイルにあるフォルダーのテストパターンに従います。次のようなテストを設定します

if [ -d "/usr/scripts" ]; then
   PATH="/usr/scripts:$PATH"
fi

ほぼ100%の時間で動作し、GUIテキストエディターで/scripts$HOMEフォルダに近い場所に移動することになった場合にすばやく「すべて置換」を使用して自由に変更できます。私はUbuntuの6回のインストールでそうしていませんが、「常に明日」があります。S

BZT


6

編集するための推奨される方法PATH/etc/environmentファイルからです

の出力例/etc/environment

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

たとえば、新しいパスを追加するには /home/username/mydir

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/username/mydir"

次に、PCを再起動します。


システム全体の環境変数

(特定のユーザーだけでなく)システム全体に影響する環境変数設定に適したファイルは/ etc / environmentです。別の方法は、目的のために/etc/profile.dディレクトリにファイルを作成することです。

/ etc / environment

このファイルは、特にシステム全体の環境変数設定用です。スクリプトファイルではなく、1行に1つずつ割り当て式で構成されています。

注:変数展開は/ etc / environmentでは機能しません。

詳細はこちらをご覧ください:EnvironmentVariables


1
最も低い答えでありながら最も正しい。このファイルは、通常、パスが含まれるUbuntuに自動入力されます。
NotoriousPyro

4

ターミナルを開きgedit .profile、次を入力して挿入します。

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$PATH:$HOME/bin"
fi

 #the following line add Bin where you dont have a Bin folder on your $HOME
    PATH="$PATH:/home/mongo/Documents/mongodb-linux-i686-2.2.2/bin"

ターミナルを閉じて、開いてください、それは働いているはずです。


2

あなたにそれを置く~/.bashrcかwhatevershellあなたがRCを使用する(またはbeforementionedする~/.profile)AND ~/.xsessionrcので、それはまた、X(外殻)で動作します。


1

システムスクリプトがこれを使用しない場合でも$HOME/bin、PATH環境変数にパス(例:)を追加したい場合は、使用する必要があります。

PATH="${PATH:+${PATH}:}$HOME/bin"

(の代わりにPATH="$PATH:$HOME/bin")追加するため、および

PATH="$HOME/bin${PATH:+:${PATH}}"

()の代わりに追加するためPATH="$HOME/bin:$PATH"

これにより、$PATH最初は空である場合の不要な先頭/末尾のコロンが回避され、望ましくない影響が生じる可能性があります。

https://unix.stackexchange.com/questions/162891/append-to-path-like-variable-without-creating-leading-colon-if-unsetを参照してください


-1

Ubuntuの場合~/.bashrcは、次の行を編集して追加します。

. ~/.bash_profile

次に、必要に応じて.bash_profileを編集します.....


1
.bash_profile必要に応じて編集する」方法を説明しなかったため、ダウン投票。正確に何をする必要があり.bash_profileますか?
同型

4
これは間違った方法です。.profileまたは.bash_profileソースする必要があります.bashrc。その逆ではありません。
ガイラ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.