に変更を加えた場合.bashrc
、ログアウトせずに再ロードするにはどうすればよいですか?
に変更を加えた場合.bashrc
、ログアウトせずに再ロードするにはどうすればよいですか?
回答:
次のコマンドを入力するだけです。
source ~/.bashrc
または、コマンドの短いバージョンを使用できます。
. ~/.bashrc
alias editbashrc='vim ~/.bashrc; source ~/.bashrc'
。これにより、カスタムエイリアスを使用している場合は、編集後にリロードについて考える必要がないため、編集がはるかにスムーズになります。
または、次のように使用できます。
exec bash
これは同じことを行い、覚えやすくなります(少なくとも私にとって)。
このexec
コマンドは、指定されたコマンドラインを実行することにより、シェルプロセスを完全に置き換えます。この例では、現在のシェルが新しいインスタンスbash
(更新された構成ファイル)で置き換えられます。
source .bashrc
コマンドとの違いを説明してもらえますexec bash
か?
source
は、現在のシェルで引数として渡されたファイルのコンテンツを実行する組み込みシェルコマンドです。したがって、あなたの例では、現在のシェルで.bashrcファイルを実行します。そして、exec
コマンドはシェルを特定のプログラムに置き換えます。例では、シェルをbashに置き換えます(更新された構成ファイルを使用)
. ~/.bashrc
ますが、dash
ではなくで実行されるbash
ため、shopt
がないためエラーが発生します。source
シェルから見つからないため、その解決策も出ています。私はこれを試してみましたが、スムーズに構築されたドッカー画像です!
source ~/.bashrc
を保持しますが(のソースによって変更される可能性があります~/.bashrc
)、exec bash
現在のシェルの環境変数のみを保持します(シェル変数、関数、オプションに関する現在のシェルへのアドホックな変更は失われます)。ニーズに応じて、どちらか一方の方法をお勧めします。
exec bash
。このexec
コマンドは、シェルをプログラム(この場合はbash)に置き換えます。したがって、ターミナルには常にbashのインスタンスが1つ存在します。
最も人気のある2つの回答を補完および対比するため、. ~/.bashrc
およびexec bash
:
どちらのソリューションも効果的にリロードしますが~/.bashrc
、違いがあります。
. ~/.bashrc
または現在のシェルsource ~/.bashrc
を保持します:
~/.bashrc
現在のシェルに(調達する)になり、現在のシェルとその状態がされている保存環境変数、シェル変数、シェルオプション、シェル関数、コマンドの履歴を含みます、。exec bash
、またはより堅牢なexec "$BASH"
[1]は、現在のシェルを新しいインスタンスに置き換えます。したがって、現在のシェルの環境変数(アドホックで定義したものを含む)のみを保持します。
ニーズに応じて、どちらか一方の方法をお勧めします。
[1] exec bash
は、理論上、現在のシェルを起動した実行可能ファイルとは異なる bash
実行可能ファイルを実行する可能性があり$PATH
ます。特殊変数には$BASH
常に現在のシェルを起動した実行可能ファイルの完全パスが含まexec "$BASH"
れているため、同じ実行可能ファイルを使用することが保証されています。周囲
の注意:二重引用符は、Bashによる解釈なしで、変数値がそのまま使用されることを保証します。値にスペースや他のシェルメタ文字が埋め込まれていない場合(この場合はありえない)、二重引用符は厳密には必要ありませんが、それらを使用するのはよい習慣です。"..."
$BASH
exec $BASH
ソース~/.bashrc
になります。そのため、新しいセッションでシェル環境への変更が表示されます。
誰かが私の回答を編集して誤った英語を追加しましたが、これはオリジナルであり、受け入れられた回答よりも劣っています。
. .bashrc
~/
が、トップの回答には両方が表示されており、この回答を冗長として削除する必要があるのかsource ~/.bashrc
と. ~/.bashrc
思います。
環境に応じて、単に入力
bash
うまくいくかもしれません。
. ~/.bashrc
source ~/.bashrc
source
.
bashではドット/ピリオドの同義語ですが、POSIX shでは同義語ではないため、最大の互換性のためにピリオドを使用してください。
exec bash
exec
コマンドは、シェルを特定のプログラムに置き換えます... – WhoSayIn
exec bash
現在のシェルの環境を継承します。exec env -i bash
(またはexec env -i bash -l
現在ログインシェルにいる場合)より近くなります。
環境によっては、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にあるパス/スクリプトが読み込まれます。
easyengineを使用して、vultrクラウドベースのサーバーをセットアップしました。
でbashファイルを見つけました/etc/bash.bashrc
。
だからsource /etc/bash.bashrc
私のためのトリックをしました!
更新
ベアサーバーをセットアップするとき(ubuntu 16.04)、まだユーザー名をセットアップしておらず、ルート経由でログインしているときに、上記の情報を使用できます。
ユーザー(sudo権限付き)を作成し、代わりにこのユーザー名でログインすることをお勧めします。
これにより、.profileや.bashrcファイルなど、設定用のディレクトリが作成されます。
https://linuxize.com/post/how-to-create-a-sudo-user-on-ubuntu/
次に、~/.bashrc
ファイルを編集して(そして「ソース」として)いきます。
私のサーバーでは、これは/home/your_username/.bashrc
(your_username
実際に上記で作成した新しいユーザー名であり、今ログインする場所)にありました。
msysgitで次のコマンドを使用します
. ~/.bashrc
の短いバージョン
source ~/.bashrc
私は個人的に持っています
alias ..='source ~/.bashrc'
私のbashrcで、「..」を使用してリロードできるようにします。
..
がのエイリアスとして使用しているためcd ..
、非常に混乱します。
alias rehash='source ~/.bashrc'
私の選択です。
export PATH=$PATH:foo
その後、に変更しexport PATH=$PATH:bar
ます。ログインすると、バックアウトした場合、唯一のbar
PATHになりますが、あなたは何を勧め、あなたがない場合は、両方foo
とbar
PATHになります。これを回避する方法を知っていますか?