/usr/bin/ "which: no ls in ((null))" という不思議なエラーを返します。

/usr/bin/

私は単純なシェルプログラムを書いています。 Mac osxとubuntuのシェルで/usr/bin/whichを使うとうまくいきます。 Red Hat Enterprise Linuxクライアントバージョン6.3(San Diego)で同じコマンドを使用すると、「which:no ANYCOMMANDHERE in((null))」エラーが発生します。

これの後ろにどんな直感がありますか?エラーが何を意味するのかさえ見つかりません(私のソースを表示すると役に立つかどうか教えてください)。

編集:私のパスは(シェル内で)次のようになります。

$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin

ありがとう、ジョン

ベストアンサー1

文字列は、その引数がNULLポインタの場合、printfの(文字列)変換指定子(null)への引数として一部のCライブラリに置き換えられます。%s

 char *path = 0; /* This would normally be = getenv("PATH"). */
 printf ("which: no foobar in (%s)\n", path);

PATH環境変数が設定されていないかエクスポートされていないようです。この場合はgetenv("PATH")0を返します。最後の可能性は、whichユーティリティに深刻なバグがある可能性があることです。

うまく動作すると言ったらexport PATH

おすすめ記事