それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

bashの再起動execとbashrc を無視する起動オプション

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).