1970

に変更を加えた場合.bashrc、ログアウトして再度ログインせずにリロードするにはどうすればよいですか?

4

17 に答える 17

3156

長い形式のコマンドを入力できます。

source ~/.bashrc

または、コマンドの短いバージョンを使用できます。

. ~/.bashrc
于 2010-03-25T18:01:04.580 に答える
340

または、次を使用できます。

exec bash

これは同じことを行い、覚えやすくなります(少なくとも私にとっては)。

このexecコマンドは、指定されたコマンドラインを実行することにより、シェルプロセスを完全に置き換えます。この例では、現在のシェルが何であれ、の新しいインスタンスbash(更新された構成ファイル)に置き換えられます。

于 2012-03-06T13:11:46.510 に答える
158

最も人気のある2つの答えを補完し、対比. ~/.bashrcするために、そしてexec bash

どちらのソリューションも効果的にリロード~/.bashrcしますが、違いがあります。

  • . ~/.bashrcまたは、現在のシェルセッションsource ~/.bashrc保持します:

    • ~/.bashrc現在のシェルへのリロード(ソーシング)による変更を除いて現在のシェルプロセスとその状態保持されます。これには、環境変数、シェル変数、シェルオプション、シェル関数、およびコマンド履歴が含まれます。
  • exec bash、またはより堅牢にexec "$BASH"[1]、現在のシェルを新しいインスタンスに置き換えます。したがって、現在のシェルの環境変数(アドホックでセッション中に定義したものを含む)のみを保持します。

    • 言い換えると、シェル変数、シェル関数、シェルオプション、コマンド履歴に関する現在のシェルへのアドホックな変更はすべて失われます。

ニーズに応じて、いずれかのアプローチが推奨される場合があります。


注:上記は他のシェルにも同様に適用されます。

  • デフォルトのシェルが何であれ、execこのアプローチを適用するには、次を使用します。exec $SHELL
  • 同様に、ソーシングアプローチでは、シェル固有の初期化ファイルの名前を知って指定する必要があります。例zsh. ~/.zshrc

[1]exec bashは、理論的には、現在のシェルを開始した実行可能ファイルとは異なる 実行可能ファイルを実行する可能性があります。特殊変数には常に現在のシェルを開始した実行可能ファイルのフルパスが含まれているため、同じ実行可能ファイルを使用することが保証されています。 注意:二重引用符は、Bashによる解釈なしで、変数値がそのまま使用されることを保証します。値にスペースやその他のシェルメタ文字が埋め込まれていない場合(この場合は可能性が高い)、厳密には二重引用符は必要ありませんが、それらを使用することは良い習慣です。bash$PATH$BASHexec "$BASH"
"..."$BASH

于 2016-01-28T23:07:51.750 に答える
47

誰かが私の答えを編集して間違った英語を追加しましたが、これは元の答えであり、受け入れられた答えより劣っています。

. .bashrc
于 2010-03-25T17:59:57.330 に答える
21

これにより、「source〜/.bashrc」と入力する必要もありません。

bashrcファイルを含めます。

alias rc="vim ~/.bashrc && source ~/.bashrc"

bashrcを編集するたびに、エイリアス「rc」を実行するだけです。

于 2016-02-29T19:39:09.187 に答える
19

環境に応じて、入力するだけです

bash

動作する場合もあります。

于 2012-03-08T11:51:51.987 に答える
17
. ~/.bashrc

.POSIXで義務付けられたビルトインです


代替案

source ~/.bashrc

sourceはbashのドット/ピリオドの同義語です.が、POSIX shにはないため、互換性を最大にするためにピリオドを使用してください。

exec bash
  • execコマンドはシェルを特定のプログラムに置き換えます...– WhoSayIn
于 2017-02-14T21:34:57.407 に答える
8

exec bashこれは、現在のシェルを置き換えるために新しいシェルを再実行して起動するための優れた方法です。答えに追加するだけで、$SHELLbashである現在のシェルを返します。以下を使用することで、bashだけでなく、現在のシェルをリロードします。

exec $SHELL -l;
于 2019-06-01T23:09:55.350 に答える
6

環境によっては.bashrc、SSHセッションを開いたときに自動的に読み込まれるようにスクリプトを追加することをお勧めします。最近、Ubuntuを実行しているサーバーに移行しましたが、デフォルトではロードされて.profileいない.bashrc.bash_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ます。

于 2018-10-04T12:11:49.523 に答える
3

私にとって、PATHを変更したときに機能するのは次のとおりです。exec "$BASH" --login

于 2018-08-08T20:13:16.687 に答える
3

easyengineを使用して、vultrクラウドベースのサーバーをセットアップしました。
でbashファイルを見つけました/etc/bash.bashrc

だからsource /etc/bash.bashrc私のためのトリックをしました!

アップデート

ベアサーバー(ubuntu 16.04)をセットアップするとき、まだユーザー名をセットアップしておらず、root経由でログインしているときに、上記の情報を使用できます。

(sudo権限を持つ)ユーザーを作成し、代わりにこのユーザー名でログインすることをお勧めします。これにより、前のリソースで説明されているように、ファイルを
含む設定用のディレクトリが作成されます。.profile.bashrc

次に、ファイルを編集して(およびsource)作成し~/.bashrcます。

私のサーバーでは、これは次の場所にありました/home/your_username/.bashrc
your_username実際には、上記で作成した新しいユーザー名で、ログインしてください)

于 2018-11-10T23:52:19.293 に答える
2

msysgitで次のコマンドを使用します

. ~/.bashrc

の短いバージョン

source ~/.bashrc
于 2014-10-02T20:32:33.383 に答える
2

インタラクティブシェルを想定しており、現在のコマンド履歴を保持し、/ etc / profile(/ etc / bashrcを含む環境データをロードします。MacOSXでは/etc/paths.d/で定義されたパスをロードします)もロードします。 path_helper)、コマンド履歴を追加し、ログイン('-l')オプションを使用してbashの実行を実行します。

history -a && exec bash -l
于 2018-11-14T00:57:32.600 に答える
1

純粋なコマンドが環境変数を保持することに気づいたので、空の環境でbashを実行exec bashするために使用する必要があります。exec -c bash

たとえば、bashにログインし、ログインしているexport A=1場合exec bashは、A == 1

の場合exec -cl bashAは空です。

これがあなたの仕事をするための最良の方法だと思います。

于 2018-05-22T13:53:48.053 に答える
1

ログアウトして再度ログインした後のように、シェルが必要なことを理解しています。それを達成するための最良の方法は次のとおりです。

exec env -i HOME="$HOME" "$SHELL" -l

exec新しいシェルが終了したときにシェルが残らないように、現在のシェルを置き換えます。によって指定されたシェル(通常はbash)が/ (したがって(ubuntuまたは指定されている場合) )を見つけることができるように追加envして、新しい空の環境を作成します。それらはのおかげで調達されます。でも完全にはわかりません。-i$HOME$SHELL~/.profile~/.bash_profile~/.bashrc-l

于 2022-01-28T09:06:02.950 に答える
0

これも機能します。

cd ~
source .bashrc
于 2014-03-04T13:15:59.070 に答える
0

多数のシェルでこのプロセスを自動化するbash_magicと呼ばれる一連のスクリプトを作成しました。bashマジックシェルディレクトリ(デフォルト)のシェルファイルを.bash.d更新すると、次のプロンプトで自動的に更新が提供されます。したがって、変更を加えたら、Enter/returnキーを押すだけで、更新が提供されます。

于 2021-10-06T14:28:44.880 に答える