web-dev-qa-db-ja.com

bashに無効なコマンドを入力したときに「/ usr / bin / python:No such file or directory」を修正するにはどうすればよいですか?

Linux(WSL)のWindowsサブシステムの下のWindowsにUbuntu 18.04.4 LTSをインストールしました。 bashターミナルに存在しないコマンドを実行すると(たとえば、誤ってlsに余分なsを追加した場合)、次のエラーが発生します。

$ lss
-bash: /usr/bin/python: No such file or directory

エラーは正しい、私はpython3のみをインストールしています:

$ ls /usr/bin/python*
/usr/bin/python3           /usr/bin/python3-jsonpatch    /usr/bin/python3-jsonschema  /usr/bin/python3.6m
/usr/bin/python3-jsondiff  /usr/bin/python3-jsonpointer  /usr/bin/python3.6           /usr/bin/python3m

Ubuntuの以前の使用から、メッセージは「プログラム 'lss'は次のパッケージにあります:」であることを覚えています。このメッセージはもう必要ありません。動作させるためだけにpython2をインストールしたくありません。 ( この質問には、py2をインストールして問題を解決するための回答があります )。

Python2をインストールしたり、python 3 as 2として)したり、完璧になってタイプミスを起こしたりせずに、これを修正することはできますか?

理想的には、「コマンドが存在しない」スクリプトをpython3に移植するか、完全に無効にすることができます。

1
idbrii

私がcommand_not_found_handle関数( a bash機能 )を使用して、bashrcでpythonを直接呼び出しました。

# if the command-not-found package is installed, use it
if [ -x /usr/lib/command-not-found ]; then
    function command_not_found_handle {
        # check because c-n-f could've been removed in the meantime
        if [ -x /usr/lib/command-not-found ]; then
           /usr/bin/python /usr/lib/command-not-found -- $1
           return $?
        else
           return 127
        fi
    }
fi

このコードは不要になりました(以前に使用したことはありますか?)、それを削除すると私の問題が修正されました。古い「出力は次のパッケージで見つかります」という出力が再び表示されるようになりました。

完全性のために:pythonコードとコマンドが存在しない単純な出力をスキップしたい場合は、これをbashrcに入れることができます:

function command_not_found_handle {
    echo Command not found: $1
    return 127
}
0
idbrii