FreeBSD QandA 690
Q. コマンドの実行例を教えてもらったので、さっそく実行しましたが
"Command not found." と叱られました。
A. どのように入力しましたか?
1. "# foo" と入力しなさいと言われたので、そのまま "# foo" と入力した場合:
コマンドの実行例を示す時に、プロンプトをつけて説明することがあります。
今回の場合、"#" 自体がプロンプトで、入力するのは "foo" だけになります。
プロンプトには、"#" のほかに "%" や "$" があります。これらの違いは、
[管理番号 639] を参照してください。
2. "foo" だけ入力した場合:
そのコマンドがインストールされていないか、そのコマンドのあるディレクトリ
にパスが通っていません。
まずそのコマンドが存在するか確認してください。次のように find(1) を使う
と簡単です。
% find / -name foo -print
これで foo が見つからなければ、インストールされていません。
見つかったならば、パスが通っていません。絶対または相対パス付でコマンドを
指定してください。たとえば、find(1) によって /usr/local/sbin/foo と表示
されたら
/usr/local/sbin/foo
と入力してください。よく使うコマンドならば、そのディレクトリをパスに
追加しましょう。
% setenv PATH ${PATH}:/usr/local/sbin (csh・tcsh 系の場合)
% PATH=${PATH}:/usr/local/sbin (sh ・bash 系の場合)
これで "foo" と入力しただけで /usr/local/sbin/foo が実行できるようになります。
なお、カレントディレクトリ (.) はパスに加えないようにしましょう。
→ [管理番号 130]
3. 絶対パスまたは相対パスを指定してもダメな場合:
foo は、スクリプトでありませんか? スクリプトを実行するプログラムが見つから
ないときにも、このエラーメッセージが表示されます。foo の 1行目が
#!/dokokano/nanntoka
のようになっているなら、/dokokano/nanntoka が存在して実行可能であることを
確かめてください。nanntoka が別のところにあれば、正しいディレクトリ指す
ようにさすように 1行目を書き換えてください。
それでも Command not found となる場合は、
% head -1 foo | hd
として、1行目をダンプしてみてください。もし
00000000 23 21 2f 64 6f 6b 6f 6b 61 6e 6f 2f 6e 61 6e 6e |#!/dokokano/nann|
00000010 74 6f 6b 61 0d 0a |toka..|
となっているなら、Windows・DOS の改行コード 0x0D 0x0A になっているため、
#!/dokokano/nanntoka(0x0D)
というコマンドを実行しようとして失敗している、ということです。UNIX の
改行コードは 0x0A ですので、
00000000 23 21 2f 64 6f 6b 6f 6b 61 6e 6f 2f 6e 61 6e 6e |#!/dokokano/nann|
00000010 74 6f 6b 61 0a |toka.|
となるように修正して下さい。お手軽な改行コード変換の方法としては、
% qkc -u file
があります。qkc は japanese/qkc として port/package に含まれています。
間違い・追加情報を見付けた場合は、
修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで
お知らせください。