「コマンドが見つかりません」のメッセージは、以下のどれかを意味します。
コマンドがそのシステムに存在しない
コマンドのディレクトリが検索パスに存在しない
検索パスの問題を解決するには、コマンドが格納されているディレクトリのパス名を知る必要があります。
間違ったバージョンのコマンドが見つかってしまうのは、同じ名前のコマンドを持つディレクトリが検索パスにある場合です。この場合、正しいディレクトリが検索パスの後ろの方にあるか、まったく存在しない可能性があります。
現在の検索パスを表示するには、echo $PATH コマンドを使用します。次に例を示します。
$ echo $PATH /home/kryten/bin:/sbin:/usr/sbin:/usr/bin:/usr/dt:/usr/dist/exe |
間違ったバージョンのコマンドを実行しているかどうかを調べるには、which コマンドを使用します。次に例を示します。
$ which acroread /usr/doctools/bin/acroread |
which コマンドは、.cshrc ファイルの中のパス情報を調べます。.cshrc ファイルに which コマンドの認識する別名を定義している場合に、Bourne シェルか Korn シェルから which コマンドを実行すると、間違った結果が返される場合があります。正しい結果を得るために、which コマンドは C シェルで使用してください。Korn シェルの場合は、whence コマンドを使用します。
現在の検索パスを表示して、コマンドが入っているディレクトリがユーザーのパス内に存在しない (あるいはスペルが間違っている) ことを確認します。
$ echo $PATH |
次の点を確認します。
パスを修正する必要がある場合は、手順 3 に進みます。修正する必要がない場合は、手順 4 に進みます。
次の表に示すように、適切なファイルでパスを追加します。
シェル |
ファイル |
構文 |
注釈 |
---|---|---|---|
Bourne と Korn |
$HOME/.profile |
$ PATH=$HOME/bin:/sbin:/usr/local/bin ... $ export PATH |
パス名はコロンで区切る |
C |
$HOME/.cshrc または $HOME/.login |
hostname% set path=( ~bin /sbin /usr/local/bin ...) |
パス名は空白文字で区切る |
次のように、新しいパスを有効にします。
シェル |
パスが指定されているファイル |
パスを有効にするコマンド |
---|---|---|
Bourne と Korn |
.profile |
$ . ./.profile |
C |
.cshrc |
hostname% source .cshrc |
|
.login |
hostname% source .login |
新しいパスを確認します。
$ which command |
この例は、which コマンドを使用して、mytool の実行可能ファイルが検索パス中のどのディレクトリにも存在しないことを示しています。
venus% mytool mytool: Command not found venus% which mytool no mytool in /sbin /usr/sbin /usr/bin /etc /home/ignatz/bin . venus% echo $PATH /sbin /usr/sbin /usr/bin /etc /home/ignatz/bin venus% vi ~/.cshrc (Add appropriate command directory to the search path) venus% source .cshrc venus% mytool |
コマンドを見つけることができなかった場合は、マニュアルページでそのディレクトリパスを調べます。たとえば、lpsched コマンド (lp 印刷デーモン) が見つからない場合、lpsched(1M) のマニュアルページを調べると、そのパスが /usr/lib/lp/lpsched であることがわかります。