![コマンド置換で壊れたbash完了を修正する方法は? [コピー]](https://linux33.com/image/58200/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E7%BD%AE%E6%8F%9B%E3%81%A7%E5%A3%8A%E3%82%8C%E3%81%9Fbash%E5%AE%8C%E4%BA%86%E3%82%92%E4%BF%AE%E6%AD%A3%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AF%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
bash-completion
私が破損しているようです。コマンド置換を使用しようとするたびに(たとえば、次のように入力するときなど)
ls $(ls Deskto<Tab>
..出てくる..
ls $(ls Desktobash unexpected eof while looking for matching ")".
.bashrc
私のファイルを削除してcp /etc/skel/bashrc ~/
新しいファイルを取得しようとしました。新しいbashrcに何かを追加するまでは動作しませんでした。してecho '#" >> ./.bashrc
も壊れます。鉱山を削除してもbash_aliases
役に立ちませんでした。
sudo apt-get install --reinstall bash-completion
それもしなかった。しかし、同様の問題のいくつかのスレッドがありますが、役に立たない。
どんなアドバイスもありがとうございました! :)
答え1
あなたのものはbash-completion
実際に「壊れた」ものではありません。ただ既知のバグbash-completion 2.1 と Bash 4.3 で使用されます。
私は最近答えた関連質問AskUbuntuからそしてまたここしかし、私がここに来たので、この質問をグーグルする人もここで答えを見つけることができるようにここにも答えます。
詳細をお知らせしましたAsk Ubuntuただし、本質的にこの問題を解決するには、次の手順を実行できます。
変える
[[ ${!2} == \$* ]] && eval $2=${!2}
そして
[[ ${!2} == \$\'* ]] && eval $2=${!2}
_quote_readline_by_ref
ファイルの関数で/usr/share/bash-completion/bash_completion
(推奨されていません)最新のGitバージョンを見るバッシュ完成ライブラリそしてそれを使用してください。このバージョンではバグが修正されたようです。
これらの解決策の1つを使用すると、コマンドの置き換えではタブ補完は再利用されませんが、少なくとも対応するエラーメッセージは再表示されません。
実際には、コマンド置換でタブ補完を実装するには、以前のバージョンのBashに戻す必要があります(効果があると聞いた)またはライブラリが実際にBash 4.3の問題を解決するのを待ちます。
答え2
この問題を引き起こす可能性があるのは、キーワードにエイリアスを割り当てることです。などlocal
のエイリアスキーワードを使用しないでください。local
do
done
答え3
/etc/bash_completion
まず、それがどのように見えるかを見てみましょう。
. /usr/share/bash-completion/bash_completion
(行の先頭を見逃さないでください.
)それでも役に立たない場合は、bashファイルからすべてのリンクを見つけようとします。
find / -name *bash* -type f -exec grep -l completion {} \+ 2>/dev/null
そして、エラーがないか確認してください。一部のファイルには次のコードが必要です。
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi