奇妙な問題がありますが、StackExchangeで同様の質問を検索する方法がわかりません。
これはに関連していますUbuntu 20.04 command-line
。
キーを押すと、TAB
AutoCompleteは「現在のコマンドへの入力」の一部として非常に奇妙な結果を追加します。
たとえば、
Typing: (cd and pressing TAB afterwards)
....
cd words=("${@:3:2}")
cword="$3"
cur="$3"
cur="$3"
cword="$3"
prev="$3"
words=("${@:3:2}")
stage^C
タイプするときも同様bash + TAB
bash words=("${@:3:2}")
cword="$3"
cur="$3"
cur="$3"
cword="$3"
prev="$3"
words=("${@:3:2}")
^C
最近、シェルのオートコンプリート機能が奇妙に機能していますが、どのように解決するのかわかりません。 (もう一度お詫び申し上げます。私はこの質問を適切に表現する方法がわからず、同様の質問も見つかりません。)
メモ:
reset
コンソールだけをクリアしましたが、その後も問題は続きます!
答え1
私はあなたのシェルがBashであると仮定します。eval
次のようにオーバーライドして問題を再現できます。
eval() { echo "$1"; }
または同様です。完了機能が使用されますeval
。eval
eval
これケース内蔵。eval
操作すると誤動作することがあります。
私のテストでは、eval
エイリアスや実行可能ファイルになっても完了は中断されないため、あなたの場合は関数である可能性が高くなります。
移動する
type eval
通常、出力は次のようになりますeval is a shell builtin
。eval is a function
unset -f eval
完了がよりよく行われているか(または少なくとも別の方法で)確認してください。
この機能がどこから来たのかを調べる必要があります。手動の方法はスタートアップファイル(~/.bashrc
など。)そして彼らが購入するすべて。より良い方法があります。次のように進んでください。
shopt -s extdebug # enable extra debugging info
declare -F eval
これにより、行番号とソースファイルが表示されます。 (shopt -u extdebug
デバッグを無効にするには、最後に実行してください。)
上記の方法は、関数定義を見つけるのに十分でなければなりません。場合に備えて、次のような他の方法があります。Bash機能を定義するファイルを見つける方法。
関数の定義が見つかったら、それを削除して組み込み関数eval
にします。eval
メモ:
- 定義を削除しても、すでに実行中のシェルは自動的には回復されません。新しいシェルを作成して疑わしい場合は、ログインしてください。
- 定義を削除すると、実際に関数を必要とするすべてが中断されるため、追加の調査が必要になる場合があります。関数が存在するのはなぜですか?定義のコードを拡張できない場合は、削除(少なくとも最初は一時的)ではなく名前を変更することをお勧めします。
- 関数は複数回定義できます(最も近いソースの定義が優先されます)。定義を削除しても組み込み機能が復元されない場合は、定義が残っている可能性があります。方法を繰り返します。
完了が完全に修正されていない場合は、出力を確認し、declare -F
組み込み機能を置き換える他の機能があることを確認してください(使用compgen -b
何を探すべきかがわかります)。必要に応じて、今行ったように分析し、eval
同様の修理を行います。
答え2
空白を見逃してset -o vi
入力したときにこれが起こりましたset -ovi
。これにより、bashの組み込みセットがv
setに送信された別のオプションとして解釈されます。 ~からGNU マニュアルページセット:
-vシェル入力行を読み取ったとおりに印刷します。
システムからログアウトすると別の症状が表示され、画面に次の内容が表示されます。
logout
# ~/.bash_logout: executed by bash(1) when login shell exits.
# when leaving the console clear the screen to increase privacy
if [ "$SHLVL" = 1 ]; then
[ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
fi