Bash タブ補完は、以前は拡張されなかった「~」を「/home/___」に拡張します。

Bash タブ補完は、以前は拡張されなかった「~」を「/home/___」に拡張します。

以前は と入力するとなってい~/biTab~/binのが今日はに~/biTabなり始めました/home/username/bin

前者を選択したいのですが、何が起こっているのかわかりません... bash完了を編集するスクリプトを追加しましたが、私のスクリプトから削除して~./bashrcサーバーを再起動しました。

これが起こり得る原因を知っている人はいますか?それとも、どのように変更することができますか?

編集する/etc/bash_completionそれで、この問題の原因が何であるかを見つけました。似たようなものと関係があるようです。これにより、bind -vチルダ拡張がオフになっていることがわかります。

だからこれを編集すると(ハッキングのように)消えると思いました。しかし、それは実際には何も満足していません。当初、この変化はどのように起こりましたか?何も実行したことがなく、sudo何度も終了して再起動した後もこの動作は続きます。

ベストアンサー1

どのディストリビューションを使用しているか言及していませんが(質問にその情報を含めてください)、システムでアップデートを実行した後に同様の動作を確認しました。

私の推測では、システムアップデートを実行するか、自動的に実行すると「bash-completion」パッケージが更新され、この動作が追加されることです。 Red Hat派生製品ではこれを行うことができます/usr/share/doc/PACKAGENAME。鉱山では、/usr/share/doc/bash-completion-1.3/CHANGES新しい変更が変更ログ形式で一覧表示されます。

変更する代わりに、チルダ拡張無効化を作成できます/etc/bash_completion。この拡張は、次のパッケージのアップグレード時に上書きされる可能性があります。~/.inputrcbash_completion-1.3.6が私のFedora 16システムでそれに従うことを確認しました。

set expand-tilde off

編集する

あなたの走行距離が異なる場合があります~/.inputrc。 Bashの機能は、実行したい操作(プログラムとファイルやディレクトリなど)に応じてこの動作をオーバーライドできます。これ議論するSuperuser SEは、コマンドを自動補完するときに同様の問題を解決しましたvim。この場合、オリジナルポスターは彼の問題を解決した彼に尋ねることによって~/.bashrc

おすすめ記事