次の行を実行しました。
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つは外部実行可能ファイル(debianutils
Debianに付属)です。
あなたの命令に従って:
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
エラーメッセージが表示されず、エラーは無視されます。dash
which
一方、zsh
内蔵which
とディスプレイを使用してください。
/dev/null not found
which
したがって、おそらくこの特定のエラーは、使用しているシェルの組み込みコマンドによって表示されます。
また、IEに存在しない/dev/null
場合は、エラーを表示するためにSTDERRをリダイレクトしたいようです。lsb_release
その場合は、STDERRを次にリダイレクトします。PATH
which
/dev/null
which lsb_release 2> /dev/null