FreeBSDで zsh
を設定するために.zshrc
ファイルを編集しました。
たとえば、PATH
システム変数を更新します。
path+=/usr/local/openjdk12/bin
変更を有効にするにはどうすればよいですか?
ログアウトして再度ログインする必要がありますか?そのファイルをすぐに実行する方法はありますか?
Zshは起動時に_.zshrc
_を読み取ります。ログアウトして再度ログインする必要はありません。ターミナルを閉じて新しいターミナルを開くだけで、この新しいターミナルで新しい_.zshrc
_が得られます。しかし、これをより直接的にすることができます。自分自身を再起動するようにzshに指示します。
_exec zsh
_
これをzshプロンプトで実行すると、zshの現在のインスタンスが、同じターミナルで実行されている新しいインスタンスに置き換えられます。新しいインスタンスには、前のインスタンスと同じenvironment変数がありますが、新しいShell(エクスポートされていない)変数があり、新しい履歴が開始されます(したがって、典型的な構成で他の端末からのコマンドで)。バックグラウンドジョブはすべて否認されます。
.zshrc
_Zshに_.zshrc
_を再度読み取るように指示することもできます。これには、シェルの履歴、シェル変数、およびバックグラウンドジョブの知識を保持するという利点があります。しかし、_.zshrc
_に何を入力するかによって、これは機能する場合と機能しない場合があります。 _.zshrc
_を再度読み取ると、コマンドを2回実行すると機能しない、または機能しないコマンドが実行されます。
_. ~/.zshrc
_
それを2回実行できるようにしたい場合、_.zshrc
_に入れても大丈夫ではないすべてを列挙するためにできることは多すぎます。以下はsomeの一般的な問題です。
fpath+=(~/.config/zsh)
またはchpwd_functions+=(my_chpwd)
)、これは同じ要素を再度追加しますが、これは問題になる場合とそうでない場合があります。_function foo { … }
alias foo='foo --common-option'
_
しかし、ファイルは2回目に読み込まれるため、foo ()
はエイリアスを展開します:_foo () { … }
alias foo='foo --common-option'
_
シェルの初期化ファイルへの変更は、たとえば、新しいグラフィカル端末を起動したり、ログアウトして再度ログインしたりした場合に、起動するnextシェルでアクティブになります。デスクトップ環境に何らかの影響を与える変更を加えた場合(どのような変更が可能かはわかりません)、ログアウトして再度ログインする必要があります。
あなたはcould. /path/to/filename
(この場合は. ~/.zshrc
)を使用してファイルをソースするか、zsh
を使用してコマンドラインから新しいシェルセッションを開始しますが、これはほとんど$PATH
変数に重複したパスを追加したり、余分なssh-agent
プロセスを開始したり、そのファイルで何をしているのかなど、望ましくない結果が生じる可能性があるため、決して良い考えではありません。変更は、既に開始されているプログラムにも表示されません。
無条件に$PATH
に追加するだけのような変更の場合、現在のシェルで追加されたコマンドを実行するだけでよいことは明らかです。
$ path+=/usr/local/openjdk12/bin
これは(zsh
で)/usr/local/openjdk12/bin
ディレクトリを$PATH
の末尾(およびzsh
の$path
配列の末尾)に追加します。現在のシェルセッション。繰り返しますが、$PATH
へのこの変更は、すでに実行中のプロセスには影響しません。
新しいファイルを読み込むことができます。これは、(他の行に応じて)PATH変数の更新を含む、いくつかの変更で機能します。ただし、それをソーシングすると単に.zshrc
が再び実行され、予期しない重複したコマンドが実行される可能性があります。さらに、古い.zshrc
から削除された行がある場合、それらはセッションから「消去」されません。
最もクリーンな方法は、ログアウトして再度ログインすることです。これは、デスクトップ環境全体ではなく、ターミナルセッションに対してのみ行う必要があります。