存在するsudo

存在するsudo

これを入力すると、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シングルユーザーとすべてのシェルに影響を与えます。

注: と が両方あり、.profilebash が両方を読み取るようにするには、次の場合には、未読のデフォルトに を追加する必要があります.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/environmentbashを設定するのに苦労するのではなく、代わりにあなたが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.

関連情報