1009

Linuxで、ディレクトリを$ PATHに追加して、異なるセッション間で永続性を維持するにはどうすればよいですか?

バックグラウンド

パスにディレクトリを追加しようとしているので、常にLinuxパスにあります。私はもう試した:

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

これは機能しますが、ターミナルを終了して新しいターミナルインスタンスを開始するたびに、このパスが失われるため、exportコマンドを再度実行する必要があります。

これが永続的に設定されるようにするにはどうすればよいですか?

4

24 に答える 24

1137

~/.profileまたは~/.bashrcファイルに追加する必要があります。 

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

実行している内容によっては、バイナリへのシンボリックリンクも必要になる場合があります。

cd /usr/bin
sudo ln -s /path/to/binary binary-name

これにより、セッションの残りの部分でパスが自動的に更新されないことに注意してください。これを行うには、次を実行する必要があります。

source ~/.profile 
or
source ~/.bashrc
于 2013-02-01T01:01:27.073 に答える
346

それを行うには複数の方法があります。実際の解決策は目的によって異なります。

変数値は通常、割り当てのリスト、またはシステムまたはユーザーセッションの開始時に実行されるシェルスクリプトのいずれかに格納されます。シェルスクリプトの場合は、特定のシェル構文exportsetコマンドを使用する必要があります。

システム全体

  1. /etc/environment一意の割り当てのリスト。参照を許可します。変数や定義など/usr/local/something/binのシステム全体のディレクトリを追加するのに最適です。PAMsystemdで使用されます。PATHJAVA_HOME

  2. /etc/environment.d/*.conf一意の割り当てのリスト。参照を許可します。変数や定義など/usr/local/something/binのシステム全体のディレクトリを追加するのに最適です。構成は複数のファイルに分割できます。通常、各ツール(Java、Go、およびNode.js)ごとに1つです。設計上、これらの値をユーザーログインシェルに渡さないsystemdによって使用されます。PATHJAVA_HOME

  3. /etc/xprofileXWindowSystemセッションの開始中に実行されたシェルスクリプト。これは、XWindowSystemにログインするすべてのユーザーに対して実行されます。PATHのようなすべてのユーザーに有効なエントリに適しています/usr/local/something/bin。このファイルは他のスクリプトに含まれているため、ユーザーシェルの構文ではなくPOSIXシェル構文を使用してください。

  4. /etc/profileおよび/etc/profile.d/*シェルスクリプト。これは、シェルのみのシステムに適しています。これらのファイルは、ログインモードのシェルによってのみ読み取られます。

  5. /etc/<shell>.<shell>rc。シェルスクリプト。これはシングルシェル固有であるため、適切な選択ではありません。非ログインモードで使用されます。

ユーザーセッション

  1. ~/.pam_environment。一意の割り当てのリスト。参照は許可されていません。X Window Systemセッションまたはシェルの場合は関係なく、すべてのユーザーセッションの開始時にPAMによってロードされます。使用が制限されているなどHOME、他の変数を参照することはできません。PATHPAMによって使用されます。

  2. ~/.xprofileシェルスクリプト。これは、ユーザーがXWindowSystemシステムにログインしたときに実行されます。ここで定義された変数は、すべてのXアプリケーションに表示されます。またはPATHなどの値で拡張する場合、またはユーザー固有のまたはを定義する場合に最適です。このファイルは他のスクリプトに含まれているため、ユーザーシェルの構文ではなくPOSIXシェル構文を使用してください。ショートカットで起動したグラフィカルテキストエディタまたはIDEに、これらの値が表示されます。~/bin~/go/binGOPATHNPM_HOME

  3. ~/.profile、、シェルスクリプト~/.<shell>_profile~/.<shell>_loginターミナルまたはターミナルエミュレータから起動したプログラムでのみ表示されます。シェルのみのシステムに適しています。ログインモードでシェルによって使用されます。

  4. ~/.<shell>rc。シェルスクリプト。これはシングルシェル固有であるため、適切な選択ではありません。非ログインモードのシェルによって使用されます。

ノート

WaylandのGNOMEは、環境を取得するためにユーザーログインシェルを開始します。ログインシェル構成、、ファイルを効果的に使用~/.profileします~/.<shell>_profile~/.<shell>_login

マニュアルページ

ディストリビューション固有のドキュメント

ログインシェルと非ログインシェルの違いは?

于 2014-11-16T21:29:08.633 に答える
253

Ubuntuでは、を編集します/etc/environment。その唯一の目的は、環境変数を格納することです。元々、$PATH変数はここで定義されています。

/etc/environmentこれは私のファイルからの貼り付けです:

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

したがって、このファイルをrootとして開いて、必要なものを追加することができます。

すぐに結果を得るには、

実行(通常のユーザーおよびルートとして試してください):

source /etc/environment && export PATH

Zシェル()を使用する場合は、ファイル内zshのコメントの直後に次の行を追加します。/etc/zsh/zshenv

source /etc/environment

Ubuntu 15.10(Wily Werewolf)でこの小さな癖に遭遇しましたが、 zshが正しいPATHを取得していない場合は、これが理由である可能性があります。

于 2014-05-27T16:27:44.623 に答える
81

exportBashの場合、宣言をに入れることができます~/.bashrc。たとえば、私の.bashrcには次の行が含まれています。

export PATH=/var/lib/gems/1.8/bin:/home/ash/.bin:$PATH
于 2013-02-01T00:59:39.860 に答える
33

$PATH2つの方法で永続的に設定できます。

  1. 特定のユーザーのパスを設定するには:

    .bash_profileユーザーのホームディレクトリにあるファイルにエントリを作成する必要がある場合があります。

    たとえば、私の場合java、Tomcatユーザープロファイルにパスを設定します*

     echo "export PATH=$PATH:/path/to/dir" >> /home/tomcat/.bash_profile
    
  2. すべてのシステムユーザーに共通のパスを設定するには、次のようにパスを設定する必要があります。

     echo "export PATH=$PATH:/path/to/dir" >> /etc/profile
    
于 2014-01-03T11:35:39.307 に答える
17

ローカルユーザーには、 CentOSまたはRed Hat Linux(RHEL)で使用できます。

echo $"export PATH=\$PATH:$(pwd)" >> ~/.bash_profile

これにより、現在のディレクトリ(または別のディレクトリを使用できます)がPATHに追加されます。これにより永続的になりますが、次回のユーザーログオン時に有効になります。

再ログオンしたくない場合は、次を使用できます。

source ~/.bash_profile

をリロードし# User specific environment and startup programsます。このコメントはファイルにあります.bash_profile

于 2016-10-21T04:11:17.750 に答える
12

次のいずれかのファイルを編集して、永続的に設定することもできます。

/etc/profile(すべてのユーザー向け)

~/.bash_profile(現在のユーザーの場合)

~/.bash_login(現在のユーザーの場合)

~/.profile(現在のユーザーの場合)

/etc/environmentを使用して永続的なPATH環境変数を設定することもできますが、変数の拡張はサポートされていません

抽出元:Linux:Añadirrutaal PATH

于 2016-06-29T08:59:52.087 に答える
10

最もエレガントな方法は次のとおりです。

  1. これを〜/.bashrcファイルに追加します。

    次のコマンドを実行します。

     gedit ~/.bashrc
    

    その中にパスを追加します。

     export PATH=$PATH:/opt/node/bin
    
  2. source ~/.bashrc

(Ubuntu)

于 2017-11-04T13:40:53.067 に答える
9
  1. 「/etc/profile」ファイルを変更します。

    vi /etc/profile
    

    Iキーを押して編集モードに入り、カーソルをファイルの最後に移動します。追加エントリ:</ p>

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

    キーを押しEscて編集モードを終了:wqし、ファイルを保存します。

  2. 構成を効果的にする

    source /etc/profile
    

    説明:</ p>

    プロファイルファイルはすべてのユーザーに対して機能します。アクティブユーザーに対してのみ有効にする場合は、「。bashrc」ファイルを変更します。

于 2018-11-23T09:24:45.433 に答える
8

昨日、自分のスクリプトを含むフォルダーをPATHに追加する方法を探していたときに、この質問に出くわしました。自分の~/.profileファイル(Linux Mint 18.1)にすでにこれが含まれていることに驚きました。

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

したがって、私がしなければならなかったのは、フォルダー~/binを作成し、そこにスクリプトを配置することだけでした。

于 2017-03-04T11:09:57.563 に答える
7

その行をコンソール構成ファイル(たとえば、.bashrcまたは.profile)に追加できます。

于 2013-02-01T00:59:22.273 に答える
5

多くの調査の結果、Flutter – Linuxへのステップバイステップインストール– Ubuntuに触発された、これに対する簡単な解決策( Elementary OSを使用しています)を見つけました。

次のコマンドを実行して、.bashrcファイルを編集モードで開きます。(viまたは他のエディターを使用することもできます)。

~$ sudo nano ~/.bashrc

ファイルの最後に次の行を追加して保存します。

export PATH="[FLUTTER_SDK_PATH]/flutter/bin:$PATH"

例えば:

export PATH="/home/rageshl/dev/flutter/bin:$PATH"

ここに画像の説明を入力してください

これは、UbuntuディストリビューションのFlutterでパスを設定するための永続的なソリューションだと思います。

于 2019-11-10T10:27:46.913 に答える
4

次の行を含むフォルダーにスクリプトファイル[name_of_script].shを追加します。/etc/profile.d

export PATH=$PATH:/dir

/etc/profile.dフォルダ内のすべてのスクリプトは、/etc/profileログイン時に自動的に実行されます。

于 2015-04-10T12:12:15.397 に答える
4

私のために働いた永続的なパスを追加する1つの方法は次のとおりです。

cd /etc/profile.d
touch custom.sh
vi custom.sh 
export PATH=$PATH:/path according to your setting/

コンピュータを再起動すると、ここに進みます。パスは永続的に存在します。

于 2016-05-28T03:19:04.867 に答える
4

次のコマンドを使用して直接追加できます。

echo 'export PATH=$PATH:/new/directory' >> ~/.zshrc
source ~/.zshrc
于 2016-07-11T11:31:39.887 に答える
4

私の答えは、 Ubuntu Linux(amd64)でのGo環境のセットアップに関するものです。環境変数(および)のパスを設定し、ターミナル出口でパスを失い、毎回を使用して再構築するという同じ問題に直面しました。GOPATHGOBINsource <file_name>

間違いは、パス(GOPATHおよびGOBIN)を~/.bash_profileファイルに入れることでした。数時間を無駄にした後、解決策は次のようにファイルに入れてGOPATHファイルに入れることであることがわかりました。GOBIN~/.bash_rc

export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOPATH:$GOBIN

そうすることで、Goのインストールは正常に機能し、パスの損失はありませんでした。

この問題が関係している理由は、UbuntuターミナルやGoコードを実行するGNOME~./bash_rcターミナルなどの非ログインシェルの設定がファイルから取得され、ログインシェルの設定がファイルから取得されるため~/.bash_profileです。そして、ファイルに到達できない~/.profile場合はファイルから。~/.bash_profile

于 2017-05-04T21:13:24.050 に答える
3

exportコマンドを追加するファイルは、ログインモードか非ログインモードかによって異なります。

ログインモードの場合、探しているファイルは/etc/bashまたは/etc/bash.bashrcのいずれかです。

非ログインモードの場合は、ファイル/.profileまたはディレクトリ/.profiles.d内のファイルを探しています。

上記のファイルは、システム変数がある場所です。

于 2013-11-05T13:35:33.467 に答える
3

PATH変数に永続的に追加します

グローバル:

echo "export PATH=$PATH:/new/path/variable" >> /etc/profile

ローカル(現在のユーザーのみ):

echo "export PATH=$PATH:/new/path/variable" >> ~/.profile

グローバルの場合は、再起動します。ローカルの場合は、再ログインします。

前:

$ cat /etc/profile

#!/bin/sh

export PATH=/usr/bin:/usr/sbin:/bin:/sbin

後:

$ cat /etc/profile

#!/bin/sh

export PATH=/usr/bin:/usr/sbin:/bin:/sbin
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable

または、ファイル「プロファイル」を編集することもできます。

$ cat /etc/profile

#!/bin/sh

export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable

別の方法(gniourf_gniourfに感謝):

echo 'PATH=$PATH:/new/path/variable' >> /etc/profile

ここでは二重引用符を使用しないでください。echo'export PATH = $ PATH:/ new / path / variable' ...ちなみに、PATH変数はすでにエクスポート済みとしてマークされている可能性が高いため、exportキーワードは役に立たない可能性が非常に高くなります。– gniourf_gniourf

于 2014-11-14T17:35:15.263 に答える
3

Zues77は正しい考えを持っています。OPは「どうすればこれをハックできますか?」とは言いませんでした。OPは、$PATHに永続的に追加する方法を知りたがっていました。

sudo nano /etc/profile

これはすべてに設定されている場所であり、 $PATHを必要とするすべてのものに変更するのに最適な場所です。

于 2015-09-25T02:26:23.193 に答える
3

macOSを実行しているとしましょう。信頼できるバイナリがあり、システム全体で使用できるようにしたいが、バイナリが追加されるディレクトリがPATHに追加される必要は必ずしもありません。

バイナリをにコピー/移動することを選択できます/usr/local/bin。これはすでにPATHに含まれているはずです。これにより、ターミナルですでにアクセスできる他のバイナリと同じように、バイナリが実行可能になります。

于 2019-07-04T13:25:26.790 に答える
2

最も簡単な方法は次の行です。

PATH="<directory you want to include>:$PATH"

ホームディレクトリの.bashrcファイルにあります。

ターミナルを閉じたり、PCを再起動してもリセットされません。それは永続的です。

于 2013-10-18T17:00:29.857 に答える
1

最もエレガントな方法は次のとおりです。

  1. これを〜./bashrcファイルに追加します。

    if [ -d "new-path" ]; then
      PATH=$PATH:new-path
    fi
    
  2. source *~/.bashrc*

(Ubuntu)

于 2016-07-17T02:50:27.067 に答える
1

これはワンライナーです。に行を追加し.bashrcます。その行は、ディレクトリがパスにすでに追加されているかどうかを確認し、追加されていない場合は追加します。これにより、ソースを作成するたびにパス内のディレクトリが重複するのを防ぐことができます.bashrc

echo "[[ \":\$PATH:\" != *\":$(pwd)/path/to/add:\"* ]] && export PATH=\"\${PATH:+\${PATH}}:$(pwd)/path/to/add\"" >> ~/.bashrc

source ~/.bashrc
于 2020-02-01T11:08:15.690 に答える
-1

Debianディストリビューションの場合、次のことを行う必要があります。

  • ファイルを編集します~/.bashrc。例えば:vim ~/.bashrc
  • 追加export PATH=$PATH:/path/to/dir
  • 次に、コンピュータを再起動します。~/.bashrcファイルをrootとして編集する場合、追加した環境変数はrootに対してのみ機能することに注意してください
于 2017-12-27T21:18:00.280 に答える