.bashrc
を変更した場合、ログアウトしてから再度ログインせずにそれをリロードするにはどうすればよいですか?
あなただけのコマンドを入力する必要があります。
source ~/.bashrc
あるいは、短いバージョンのコマンドを使用することもできます。
. ~/.bashrc
またはあなたが使用することができます。
exec bash
同じことをします。 (少なくとも私にとっては覚えやすい)
exec commandはシェルを特定のプログラムに置き換えます。この例では、シェルをbashに置き換えます(更新された設定ファイルを使います)。
補数と対比 2つの最も一般的な回答 . ~/.bashrc
および exec bash
:
両方のソリューションが効果的に~/.bashrc
をリロードしますが、違いがあります:
. ~/.bashrc
またはsource ~/.bashrc
はpreserve現在のシェル:
~/.bashrc
を現在のシェル(sourcing)にリロードする変更を除いて、現在のシェルとその状態preservedであり、環境変数、シェル変数、シェルオプション、シェル関数、およびコマンド履歴が含まれます。exec bash
、または、より堅牢に、exec "$BASH"
[1]、replace現在のシェルを新しいインスタンスに置き換えるため、onlypreserve現在のシェルの環境変数(アドホックに定義したものを含む)。
ニーズに応じて、どちらか一方のアプローチが好ましい場合があります。
[1] exec bash
は、$PATH
の前にリストされたディレクトリに存在する場合、理論的には、現在のシェルを起動したものとは異なるdifferentbash
実行可能ファイルを実行できます。特殊変数$BASH
には常に現在のシェルを開始した実行可能ファイルの完全パスが含まれているため、exec "$BASH"
はsame実行可能ファイルを使用することが保証されます。"..."
の周りの$BASH
に関するメモ:二重引用符は、Bashによる解釈なしに、変数値がそのまま使用されることを保証します。値にスペースや他のシェルメタキャラクターが埋め込まれていない場合(この場合はそうではありません)、二重引用符を厳密に使用する必要はありませんが、それらを使用するのは良い習慣です。
誰かが間違った英語を追加するように私の答えを編集しましたが、これは元のもので、受け入れられた答えより劣っていました。
. .bashrc
あなたの環境に応じて、ただタイプする
bash
うまくいくかもしれません。
これにより、ない「source〜/ .bashrc」と入力する必要さえあります:
bashrcファイルを含める:
alias rc="vim ~/.bashrc && source ~/.bashrc"
Bashrcを編集するたびに、エイリアス "rc"を実行するだけです
. ~/.bashrc
source ~/.bashrc
source
はbashではdot/period.
の同義語ですが、POSIX shでは同義ではありません。そのため、最大限の互換性を保つためにピリオドを使用してください。
exec bash
exec
command Shell を与えられたプログラムで置き換えます... - WhoSayIn
環境によっては、SSHセッションを開いたときに.bashrcが自動的にロードされるようにスクリプトを追加することをお勧めします。私は最近Ubuntuを実行しているサーバーへの移行をしました、そしてそこに、.bashrcや.bash_profileではなく、.profileがデフォルトでロードされます。 .bashrcでスクリプトを実行するには、セッションが開かれるたびにsource ~/.bashrc
を実行する必要がありました。これは、リモートデプロイの実行時には役に立ちません。
セッションを開くときに.bashrcを自動的にロードするには、これを.profileに追加してみます。
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
セッションを再度開くと、.bashrcにあるパスやスクリプトがすべて読み込まれます。
私にとって、PATHを変更したときの動作は次のとおりです。exec "$BASH" --login
私は私のvultrクラウドベースのサーバーをセットアップするためにeasyengineを使いました。
私のbashファイルは/etc/bash.bashrc
にあります。
だからsource /etc/bash.bashrc
は私のためにトリックをしました!
更新
ベアサーバーをセットアップするとき(ubuntu 16.04)、まだユーザー名をセットアップしておらず、rootでログインしているときに上記の情報を使うことができます。
Sudo特権を持つユーザーを作成し、代わりにこのユーザー名としてログインするのが最善です。
これにより、.profileファイルや.bashrcファイルなど、設定用のディレクトリが作成されます。
https://linuxize.com/post/how-to-create-a-Sudo-user-on-ubuntu/
それでは、~/.bashrc
ファイルを編集(そして「ソース」)します。
私のサーバーでは、これは/home/your_username/.bashrc
にありました
(ここで、your_username
は、実際には上記で作成した新しいユーザー名です。現在はログインしています)
タイプ:
source ~/.bashrc
または、より短い形式で:
. ~/.bashrc
これも動作します。
cd ~
source .bashrc
私はmsysgitで次のコマンドを使用
. ~/.bashrc
の短いバージョン
source ~/.bashrc
純粋なexec bash
コマンドは環境変数を保存するので、空の環境でbashを実行するにはexec -c bash
を使用する必要があります。
たとえば、bashにログインし、export A=1
の場合はexec bash
、A == 1
にログインします。
exec -cl bash
の場合、A
は空です。
私はこれがあなたの仕事をする最善の方法だと思います。
対話型シェルを想定し、現在のコマンド履歴を保存し、/ etc/profile(/ etc/bashrcを含む環境データをロードし、Mac OS Xでは/etc/paths.d/に定義されているパスを次のようにロードします) path_helper)、コマンド履歴を追加し、login( '-l')オプションを付けてbashを実行します。
history -a && exec bash -l
exec bashは、現在のシェルを置き換えるために新しいシェルを再実行して起動するための優れた方法です。答えに加えて、$ Shellはbashである現在のシェルを返します。以下を使うことで、bashだけでなく現在のシェルをリロードします。
exec $Shell -l;