LinuCレベル1 102試験の例題と解説

主題1.06シェルとスクリプト

1.06.1シェル環境のカスタマイズ

このエントリーをはてなブックマークに追加

今回は、LinuC 102試験の試験範囲から「1.06.1 シェル環境のカスタマイズ」についての例題を解いてみます。
今回はスクリプトを実行するコマンドについて確認しておきましょう。

Linucレベル1 102試験 出題範囲


例題

ユーザのホームディレクトリにある「.bashrc」の設定を変更した際に、変更内容を実行中のシェルに反映することのできるコマンドラインを2つ選択してください。

  1. $ source .bashrc
  2. $ bash .bashrc
  3. $ .bashrc
  4. $ . .bashrc

※この例題は実際の試験問題とは異なります。


解答と解説

正解は、「1. $ source .bashrc」と「4. $ . .bashrc」です。

sourceコマンドはファイルに書かれたコマンドを現在のシェルで実行するコマンドです。シェルの設定ファイルを更新した後、反映させる際によく利用されます。
sourceコマンドを利用した場合、シェルの設定ファイルの内容をログインしなおすことなく、実行中のシェルに反映することができます。

sourceコマンドは、簡略化して「.」で置き換えることができます。

よって正解は、「1. $ source .bashrc」と「4. $ . .bashrc」となります。

選択肢の解説は以下です。

1.$ source .bashrc
正解です。
sourceコマンドの引数にシェルの設定ファイルを指定することで、設定ファイルに記載されているスクリプトを現在のシェルで実行できます。
そのため環境変数などの設定を変更したときなどに、再ログインすることなく設定を反映することができます。

2.$ bash .bashrc
誤りです。
bashコマンドはシェルスクリプトを実行するコマンドです。
sourceコマンドで実行した場合「現在のシェルで実行」されますが、bashコマンドで実行した場合は「別のシェルが起動され別プロセスで実行」されます。
そのため、bashコマンドを用いてシェルの設定ファイルを実行しても、シェル自体の設定は変更されません。

3.$ .bashrc
誤りです。
ファイル名だけを指定して実行できるようにするには、ファイル自体に実行権があり、かつ変数PATHにスクリプトファイルが置かれているディレクトリが含まれている必要があります。
また、bashコマンド同様別のシェルが起動されて別プロセスで実行されるため、ファイル名だけを指定して実行できるように設定した場合でもシェル自体の設定は変更されません。

4.$ . .bashrc
正解です。
sourceコマンドを、簡略化し「.」で置き換えています。

解説で説明したように、bashコマンドもsourceコマンドも、引数に指定したファイルを実行することができますが実行するシェルが異なります。bashコマンドを使って実行した場合は、別のシェルが起動され別プロセスで実行されます。
そのため、ファイル内で環境変数など定義している場合でも、現在のシェルには影響しません。一方、sourceコマンドを使って実行した場合は、現在のシェルで実行されるため、実行中のシェルに影響します。

シェルの設定ファイルで環境変数など設定変更した際に、現在のシェルで設定を反映させたい場合など、用途によって使い分けられるようにしておきましょう。


例題作成者

株式会社デージーネット OSS研究室 橋本知里

ページトップへ