/ devエラーにnullがありません。

/ devエラーにnullがありません。

次の行を実行しました。

which lsb_release 2&>1 /dev/null

出力:

error: no null in /dev

にエラーがls /dev/nullあるかどうかを確認するためにコマンドを使用すると、このエラーが発生するのはなぜですか?私はこの問題を解読できません。null/dev

修正する

which他人のシステムで上記のコマンドを試しましたが、エラーは発生せずに正常に実行されました。

ベストアンサー1

まず、リダイレクトは必ずしも終わりや始まりではなく、コマンドラインのどこにでも発生する可能性があります。

たとえば、

echo foo >spamegg bar

foo barファイルに保存されますspamegg

また、2つのバージョンがありますwhich。 1つは組み込みシェル、もう1つは外部実行可能ファイル(debianutilsDebianに付属)です。

あなたの命令に従って:

which lsb_release 2>&1 /dev/null

これにより、最初に実行される2&>1リダイレクトではなく、STDOUT(FD 1)が指す位置にSTDERR(FD 2)をリダイレクトします。/dev/null

したがって、残りのコマンドは次のようになります。

which lsb_release /dev/null

同様のコマンドがないため、/dev/nullエラーが発生します。

この動作はwhichシェルが組み込みか外部実行可能ファイルかによって異なります。組み込みがbashなく、externalを使用するとkshエラーメッセージが表示されず、エラーは無視されます。dashwhich

一方、zsh内蔵whichとディスプレイを使用してください。

/dev/null not found

whichしたがって、おそらくこの特定のエラーは、使用しているシェルの組み込みコマンドによって表示されます。


また、IEに存在しない/dev/null場合は、エラーを表示するためにSTDERRをリダイレクトしたいようです。lsb_releaseその場合は、STDERRを次にリダイレクトします。PATHwhich/dev/null

which lsb_release 2> /dev/null

おすすめ記事