なぜbash_profileの発効の内側に設定されていません

最近Neovimをインストールし、.bash_profilePATH変数を設定し、奇妙なことは、新しいSSHクライアントがあります自分のアカウントサーバ、にログインした後、新しいセッションを開くたびにされ.bash_profile、私がすることはできません。原因PATHコマンドでは、有効にするに設定されていませんNeovimは、各ログイン後にインストールを開始、私はまた、手動でソースを見ている.bash_profileあなたは非常に退屈な、nvimコマンドを使用する前に、ファイル。この記事では、なぜ探ります。

してください.bash_profileするコピー内の設定.bashrcが有効で、示して取り組んNeovim、PATH変数の設定をログイン後に発見.bash_profile、ログイン時にセットの内部がソースされていません。なぜか?私は、将来的に問題の核心を知って、すぐにその答えは、アカウントのログインに使用されたsu $USERNAME問題の命令を。あなたのアカウントにコマンドログを使用している場合は、シェルを開くことは、単に、非ログインシェルで.bashrcの設定は、ソースされているので、内部の.bash_profile内部設定し、それが有効になりませんでした。

ログイン/非ログインシェル以及インタラクティブ/非インタラクティブシェル

非ログインシェルとは何ですか?それは、この問題を明確にして、我々は唯一のBashシェルのために、問題を単純化するために、シェルの異なるモードを導入する必要があります。ログインシェルとシェルは、非ログインシェルに分割され、対話型シェルは、シェルを分割し、非対話することができます。

対話型シェルは、シェルを出力することができることをいうか、入力を受け付け、実際には、非対話型シェルスクリプトファイルに存在する場合、スクリプトを実行するが実行されたときに非対話型シェルは、ユーザ入力を受け付けることができません。ログインシェルを入力した後ならば、その後、GUIターミナルを開いたり、実行し、ログインシェルは、一般的に、通常のSSHのシェルを介して入力されたサーバー(ユーザー名とパスワード)にログオンを参照するbashコマンドを、その後、非ログインシェルを開きます。

どの構成ファイル読み込まれますか?

ログが最初に読み込まれ、実行時に対話的なログインシェルを使用して/etc/profilefileコマンドを、その後、順番を見つけ~/.bash_profile~/.bash_loginおよび~/.profileファイル、その後、最初のファイルから読み込ん存在し、読み、命令を実行することができ、bashのmanページの説明次のように:

bashのは、次のように呼び出された場合には、対話型ログインシェル、またはそのファイルが存在する場合-loginオプション付きの非対話型シェルとして、それは最初、ファイルは/ etc / profileからコマンドを読み込み、実行します。そのファイルを読んだ後、それから〜/ .bash_profileを、〜/ .bash_loginを探し、〜/ .profileに、そのためには、および読み取りと実行のコマンドが存在し、読み取り可能である最初のもの

それはインタラクティブな非ログインシェルの場合は、最初の読み取りを実行し、開始時刻/etc/bashrc、実行を読んで~/.bashrc

どちらの場合も、最も一般的です。

ログインアカウントでは、ことを確認したときにことをしたい.bash_profileの内部構成は、ログインシェルでなければなりませんシェルを開いて、有効にします。suコマンドが提供さ-l(と同等のオプション-):

完全なログインをシミュレート-l。環境はHOME、SHELL、PATH、TERM、およびUSER以外に廃棄されます。HOMEとSHELLは、上記のように変更されています。USERは、ターゲットログインに設定されています。PATHは次のように設定されます/bin:/usr/binTERMは、あなたの現在の環境からインポートされます。起動したシェルはターゲットログインのである、とSUはターゲットログインのホームディレクトリに移動します。

ログインを使用している場合ので、su - USERNAME保証することができます.bash_profile設定を有効にする内。

おすすめ

転載: www.linuxidc.com/Linux/2019-11/161299.htm