これを入力すると、echo $PATH
次のような結果が表示されます。
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
PATH
しかし;を使用して変数ファイルを変更しましたが、gksudo gedit /etc/environment
今はPATH="/opt/texbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
.
なぜ2つの異なる値を得ているのかわかりませんPATH
。どうすれば解決できますか?
私はCroutonを使ってChromebookでXfceを実行しています。
答え1
編集する
/etc/profile
すべてのユーザーに影響を与えます。~/.bash_profile
単一ユーザーの bash シェルに影響を与えます (bash 関連項目なので、これはありません)。~/.profile
シングルユーザーとすべてのシェルに影響を与えます。
注: と が両方あり、.profile
bash が両方を読み取るようにするには、次の場合には、未読のデフォルトに を追加する必要があります.bash_profile
。. .profile
.bash_profile
.profile
.bash_profile exists
存在するsudo
- エディタをrootとして実行しないでください。したがって、これをしないでください。
gksudo gedit «filename»
- X11 アプリケーションを root として実行しないでください。したがって、これをしないでください。
gksudo gedit «filename»
- 代わりに、
EDITOR=gedit sudoedit «filename»
一時ファイルであるかのようにエディタを実行し、完了したら入力された内容をルートにコピーします。
答え2
正しい設定位置はPATH
次のとおりです~/.bash_profile
。
PATH="$PATH:/some/extra/paths:/may/go/here"
変数はPATH
すでにエクスポートされているため、再エクスポートする必要はありません。export
再エクスポートしても効果はありません。
デフォルトのパスは実行可能ファイルbash
にハードコードされ、bash
(/etc/profile
一部のシステムでは)および(一部のシステムでは)さらに(おそらく)変更されます/etc/bash.bashrc
。
私の考えでは、設定されたパスは主になどのような非シェル/etc/environment
で使用されます。cron
また見なさい:
答え3
/etc/environment
システム全体の置き換えです。ユーザー固有の構成は~/.bash_profile
それを上書きできます。とにかく、/etc/environment
bashを設定するのに苦労するのではなく、代わりにあなたがPATH
望むものを入れてください~/.bash_profile
。それが間違っていても/etc/environment
、あなたが入れたものによって上書きされます~/.bash_profile
。
/etc/environment
また、それに依存するプログラムのマイナーな損傷を防ぐために、以前の状態に戻す必要があるかもしれません。このファイルはパッケージに付属しているため、パッケージマネージャを使用して元の形式にリセットできます。
答え4
アップデートノート:私はzsh用に書いていますが、bashでも動作します。
道路をきれいに保つために私が使用する方法は次のとおりです。 (注:zsh0_pathfix.zsh
設定を別々のファイルとしてロードしました。このファイルを最初にロードする必要があるため、標準化された命名規則を維持しながらそれを適用する簡単な方法は前に付けることです
# add to path if $1 is not already in path
pathAppend() {
if ! echo $PATH | egrep -q "(^|:)$1($|:)" ; then
PATH=$PATH:$1
fi
}
# filters the path checking against itself for duplicates returns clean path then exports the clean path.
PATH=$(echo "$PATH" | awk -v RS=':' -v ORS=":" '!a[$1]++{if (NR > 1) printf ORS; printf $a[$1]}'); export PATH;
# This ensures that even if you manually added to the path the next time zsh source is reloaded the path will clean itself.