bash.bashrc
ファイルに環境変数を設定するために使用した日付まで。最近、/etc/environment
ファイルを使用するように言われました。まあ、両方ともうまくいきます。
それで、それらの違いは何ですか?
私はこれをグーグルで調べましたが、「bashrcは特定のユーザーと環境、システム全体で使用されています」とわかりました。ここでシステム全体とはどういう意味ですか? /etc/bash.bashrc
は、システム全体に変更を適用していると思います。間違っている場合は修正してください。どんな種類の助けも歓迎されます。
違いの1つは、/etc/environment
には変数の定義のみが含まれており、変数の展開/補間を一切行っていないように見えることです。したがって、定義内の変数を参照することはできません。たとえば、これは機能しません。
A="else"
B="something $A"
Bは、予想されるsomething $A
ではなく、文字通りsomething else
になります。
この質問 を参照してください。
ところで、Googleで見つけた答えは、システム全体の~/.bashrc
ではなく、ユーザーの/etc/bash.bashrc
を参照しているようです。それが混乱を引き起こしている可能性があります。
/etc/environment
ファイルは、ブート時にすべてのユーザーに対してシステム全体の変数を設定します。ユーザーがbash
シェルを開くと、/etc/bash.bashrc
内のコマンドが実行されます。したがって、bash
シェルが少なくとも1回開かれない限り、変数は設定されません。
そして、「システム全体」について尋ねているとき:
/etc
ディレクトリーにある構成ファイルは、システム上のすべてのユーザーに適用されます。 /etc/bash.bashrc
の場合、これは、そのマシンで「Borne Again Shell」(別名Bash)を使用しているすべてのものに意味します。あなたがそれを使用している唯一の人間であっても、「技術ユーザー」の影響を受ける可能性があります(単に/etc/passwd
を見て、そこに「/ bin/bash」という用語が記載されている頻度を確認するか、grep bash /etc/passwd | wc -l
を使用します。その番号を直接与えます(つまり、ファイル "/ etc/passwd"から文字列 "bash"を含むすべての行を "グラブ"し、結果( "|")をコマンド "wc"(ワードカウント)に送信してcount行( "-l")。
そのため、ユーザーにとっては、代わりに~/.bashrc
を変更する方がはるかに安全です(つまり、ホームディレクトリー内の先頭にドットが付いたファイル「.bashrc」、たとえば/home/ankur/.bashrc
)。ユーザーに影響を与え、すべてを残すそれ以外の場合。 /etc
のファイルは、システム全体の変更が本当に意図されている場合にのみ変更する必要があります。
その他:両方の構成が存在する場合に使用されます。最初に、システム全体のファイル(ここでは/etc/bash.bashrc
)が読み取られ、「ソース」(現在のセッションに設定が適用されます)、次にユーザー/home/username/.bashrc
が同じように処理されるため、設定を追加したり、グローバル/etc/bash.bashrc
ファイル。
システム全体とユーザー全体の範囲の議論を超えて、最も重要な違いの1つは、/etc/environment
が~/.bashrc
以外のnotスクリプトであるということです。
/etc/environment
内の変数を逆参照することはできません。その変数の割り当ては、文字通り行の値を取ります(roadmrで既に述べたように)。
新しいパスを追加しようとして$PATH
内の/etc/environment
を台無しにすると、Ubuntuはロックアウトされます
PATH=$PATH:/new_path
Ubuntu GnomeまたはUnityのログインページで、パスワードを間違えることなく申し込むことができなかった場合。そして、最近/etc/environment
を変更しました。これはほとんどの場合です。
修正は、仮想コンソールにログインすることです CTRL+ALT+F1 ログインコンソール、手動で$PATH
を確認し、/etc/environment
ファイルを修正します。
this に従って、/etc/environment
はPAMスタックによってロードされ、環境変数を1行ずつ入力します。