いくつかの異なるシェルスクリプトでこのコマンドを見たことがあります。
exec $SHELL -l
...しばしば次の代替として使用されます。
source ~/.profile
何をしますかexec $SHELL -l
?
答え1
execコマンドは、現在のプロセスイメージ(実行ファイルまたはプログラム)を新しいプロセスイメージ(execという引数)に置き換えます。 $ SHELLに実行可能ファイル名が含まれている場合(通常はそうです)、execは実行中のシェルの代わりにexeを起動します。
ただし、これは「source」を使用してコマンドファイルを読み取るのとはまったく異なります。 source コマンドは指定されたファイルを読み取り、内容を 1 行ずつ実行します。現在のシェルのコマンドラインに入力するのと同じです。
答え2
シェル($SHELL
)をログインシェルとして呼び出します。
Bashのマニュアルページから
-l Make bash act as if it had been invoked as a login shell
(see INVOCATION below).
詳細については、マニュアルページのINVOCATIONセクションを読んでください。
TL;博士;
結論は、Bashが呼び出されたときにどのファイルをインポートするかを教えてくれることです。 1つまたは$HOME/.bash_profile
()。-l
$HOME/.bashrc
-i