Ubuntu ターミナルで間違ったコマンドを実行すると、「コマンドが見つかりません」とエコーされる代わりに、ターミナルは何もせず、Ctrl+を押すとCPython 例外スタック トレースがエコーされます。何か問題がありますか? これを修正するにはどうすればよいでしょうか?
たとえば、「sdf」と入力しても何も起こりません。「sdf」は有効なコマンドではありません。
Ctrlしかし、 +を押すとC、この Python 例外スタック トレースが出力されます。
スタック トレースは毎回異なります。
私はUbuntu 14.04を使用しているので、python2がデフォルトです
$ type python python2 python3
python is /usr/bin/python
python2 is /usr/bin/python2
python3 is hashed (/usr/bin/python3)
$ readlink /usr/bin/python /usr/bin/python2 /usr/bin/python3
python2.7
python2.7
python3.4
$ python --version
Python 2.7.6
$ python3 --version
Python 2.7.6
$ readlink /usr/bin/python3.4
$
sudo apt-get install --reinstall python
役に立たなかった。sudo apt-get install --reinstall python3
エラーが発生しました
アップデート:
いろいろな方法を試した結果、Ubuntuを再インストールすることにしました。wjandrea の回答そしてコメントは、問題を特定する上で的を射ているようです。
答え1
/etc/bash.bashrc
は、 Python 3 スクリプトである をcommand_not_found_handle
呼び出す関数 を定義します。このハンドラは、Bash が見つけられないコマンドに対して呼び出されます。/usr/lib/command-not-found
したがって、応急処置として、ハンドラーを設定解除することができます。
unset -f command_not_found_handle
アップデート2:
OPと話し合った結果、この問題はPython 2.7の実行ファイルが誤って/usr/bin/python3.4に置かれたために発生したことが判明しました。(最初のアップデートはあまり役に立ちませんでしたが、改訂4もしあなたがそれを読みたいなら。もしあなたがこれを読んだら、コンピュータを再起動しないでください。 GUI の一部は Python 3 に依存しています。ターミナルも開いたままにしておく必要があるでしょう。
ちなみに、これは、Bash プロンプトで不明なコマンドを呼び出すときの無限ループについて説明しています。/usr/lib/command-not-found
このセクションには次の内容が含まれています。
if sys.version < '3':
# We might end up being executed with Python 2 due to an old
# /etc/bash.bashrc.
import os
if "COMMAND_NOT_FOUND_FORCE_PYTHON2" not in os.environ:
os.execvp("python3", [sys.argv[0]] + sys.argv)
つまり、Python 2 によって実行されると が呼び出されますpython3
が、 はpython3
実際には Python 2 であるため、プロセスが繰り返されます。
アップデート3:
OP は最終的に Ubuntu を再インストールしましたが、私は興味があったので VM を開いて同様の問題 (同じ問題ではないにしても) を引き起こし、それを修正しました。
問題を引き起こした
sudo cp /usr/bin/python2.7 /usr/bin/python3.4
問題を確認しました
- 走っ
python3 --version
て、Python 2.7.6
- 実行しようとしましたが
sdf
、ループを停止するにはCtrl+Cを押さなければなりませんでした
- 走っ
修正しました:
sudo apt-get install --reinstall python3.4-minimal
パッケージは
python3.4-minimal
Python 3.4 実行ファイル自体を提供します。私が確認した他のすべてのパッケージ (python3
、、) は、その理由に依存していpython3.4
ます。python3-minimal
python3.4-minimal
(OPと私は、最初はこの解決策につまずきました。私が試したこと、他に何を間違えたか、そしてどのように修正したかについての詳細は、この回答の改訂9。