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

主題1.03GNUとUnixのコマンド

1.03.1コマンドラインの操作

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

LinuCレベル1101試験の試験範囲から、「1.03.1 コマンドラインの操作」についての例題を解いてみます。コマンドの呼び出し方法について確認しておきましょう。

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


例題

testユーザのホームディレクトリでコマンドを自作し、コマンドを実行しようとしたところ以下のエラーが表示された。

$ org_command
-bash: org_command: コマンドが見つかりません

この時、どのディレクトリにいてもコマンドを実行できるようにする方法として適切なものを全て選択してください。

※実行権は設定されているものとします

  1. 「$ printenv PATH」を実行する
  2. 環境変数PATHにtestユーザのホームディレクトリを追加する
  3. root権限で実行する
  4. コマンドの実行ファイルを絶対パスで指定する

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


解答と解説

正解は、「2. 環境変数PATHにtestユーザのホームディレクトリを追加する」と、「4. コマンドの実行ファイルを絶対パスで指定する」です。

コマンドを実行するためには、そのコマンドの実行ファイルが配置されている場所を指定する必要があります。ただし、環境変数PATHに設定されているディレクトリ配下の実行ファイルは、自動的に検索されるため、絶対パスで指定しなくても実行することができます。

環境変数PATHに設定されているディレクトリは、echoコマンドを用いて確認することができます。

$ echo $PATH
/home/test/.local/bin:/home/test/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin

上記のように、実行ファイルが自動的に検索されるディレクトリは、:(コロン)区切りで設定されています。

例えば、lsコマンドはコマンド名のみで実行が可能です。lsコマンドの絶対パスを調べると、[/usr/bin/ls]と表示され、環境変数PATHにある[/usr/bin]配下に実行ファイルがあることが分かります。

$ which ls
alias ls='ls --color=auto'
        /usr/bin/ls

実行ファイルを配置しているディレクトリが環境変数PATHに設定されていない場合は、環境変数PATHにディレクトリを追加することで、パスを指定しなくてもコマンドを実行できるようになります。この作業を「パスを通す」といいます。

このことから、「2. 環境変数PATHにtestユーザのホームディレクトリを追加する」と、「4. コマンドの実行ファイルを絶対パスで指定する」が正解となります。

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

「1.$ printenv PATHを実行する」
誤りです。
printenvコマンドは、環境変数の内容を表示するコマンドです。PATHを指定した場合は、以下のように環境変数PATHの設定内容が表示されます。

$ printenv PATH
/home/test/.local/bin:/home/test/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin

表示のみで、コマンドを実行できるようにはならないので不正解です。

「2.環境変数PATHにtestユーザのホームディレクトリを追加する」
正解です。
例題には、「testユーザのホームディレクトリでコマンドを自作し」とあります。そのため、環境変数PATHにtestユーザのホームディレクトリを追加することで、コマンド名のみでコマンドが実行できるようになります。

一時的に環境変数PATHに設定を追加するには、exportコマンドを使用します。

$ export PATH=$PATH:/home/test

なお、$PATH:と最初に記載しているのは、既存の環境変数PATHの設定に追加を行うためです。 環境変数PATHにtestユーザのホームディレクトリを追加することで、どのディレクトリにいてもパス指定なしで、コマンドを実行することができるようになります。

$ org_command
これは自作のコマンドです

「3.root権限で実行する」
誤りです。
コマンドが実行できていない理由は「コマンドが見つかりません」と出力されているように、コマンドのパスが不明のためエラーとなっています。そのため、root権限で実行した場合も同様のエラーとなります。よって不正解です。

「4.コマンドを絶対パスで指定する」
正解です。
以下のようにコマンドの実行ファイルを絶対パスで指定することで、そのコマンドを実行することができます。

$ /home/test/org_command
これは自作のコマンドです

なお、コマンドの実行ファイルまでのパスが指定されていればよいので、相対パスで指定した場合もコマンドを実行することが可能です。

同様にダウンロードしたプログラムを『環境変数PATHに設定されていないディレクトリ』に配置した時などにもパスの設定作業は必要です。
環境変数PATHの確認方法や設定方法なども併せて勉強しておきましょう。


例題作成者

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

ページトップへ