bash の再起動方法
exec bash --login
bash の起動オプション
以下のオプションは、すべて同じ意味だと思っていい。
bash を起動してInteractiveShellとして起動する。設定ファイルなどはいつもどおりの順番で処理します。
bash --login bash -l bash -
exec の意味
exec は別のプロセスを実行して現在のプロセスを置き換える。
本来は、シェルスクリプトでbash から起動した ruby などに処理を引き渡すなどに使う。
exec の例
#!/usr/bin/env bash ARGS=() #何か初期化 exec ruby my_script ${ARGS[@]} # bashを終了してruby にする
exec bash で再起動
コレを合わせると、再起動になる。
exec で現在のbashを終了して、新しく起動したbash に切り替える。
$ exec bash --login
rc ファイルを指定する場合。
bash --rcfile ~/.bashrc.another
などとすれば、別のプロファイル( ~/.bashrc ) に切り替えられたりする。
rcも profile も使いたくない
なんも設定してない素のbashを使いたいと思ったら。
こんな設定で起動してやればいい。
bash --noprofile --norc
exec と組み合わせて戦える。
ただし変数は移行する
シェルからサブシェルを起動するときに環境変数は移行するので。。。
exec env -i bash --norc --noprofile
env -i
で 変数をignore して起動するとオッケー。
man からの抜粋
-l Make bash act as if it had been invoked as a login shell (see INVOCATION below). --noprofile Do not read either the system-wide startup file /etc/profile or any of the personal initial- ization files ~/.bash_profile, ~/.bash_login, or ~/.profile. By default, bash reads these files when it is invoked as a login shell (see INVOCATION below). --norc Do not read and execute the personal initialization file ~/.bashrc if the shell is interac- tive. This option is on by default if the shell is invoked as sh. --rcfile file Execute commands from file instead of the standard personal initialization file ~/.bashrc if the shell is interactive (see INVOCATION below).