bashタブ補完は、「〜」を「/ home / ___」に展開します


13

以前は、と入力すると~/biTab、に変わり~/binます。しかし、今日ではに変わり始め~/biTabました/home/username/bin

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

誰がこれが起こる原因を知っていますか?または、元に戻すにはどうすればよいですか?

編集 だから私はこれを引き起こすかもしれないものを見つけました...それが関係していること、/etc/bash_completionそしてそのようなもの。するとbind -v、チルダの展開がオフになります。

したがって、これを編集すると(ハッキングのようなもの)消えると思います。しかし、それは本当に何も満足していません-この変化はそもそもどうして起こったのでしょうか?として何も実行したことはなくsudo、複数回シャットダウンして再起動した後もこの動作は続きます。

回答:


8

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

システムアップデートを実行したとき、または自動的に実行された場合、この動作を追加した「bash-completion」パッケージが更新されたのが最善の推測です。Red Hat派生製品では、パッケージのドキュメントをで見つけることができます/usr/share/doc/PACKAGENAME。私の/usr/share/doc/bash-completion-1.3/CHANGES場合、新しい変更は変更ログ形式でリストされます。

/etc/bash_completion次のパッケージのアップグレードで上書きされる可能性があるを変更する代わりに、~/.inputrcチルダの展開を無効にするように作成できます。Fedora 16ボックスでbash_completion-1.3.6がこれを尊重することを確認しました。

set expand-tilde off

編集

マイレージはによって異なります~/.inputrc。Bashには、完了しようとする内容(プログラムとファイルまたはディレクトリなど)に応じて、その動作をオーバーライドする機能があります。スーパーユーザーSE に関するこの説明では、vimコマンドを自動補完する際の同様の質問に対処しています。この場合、元のポスターはにカスタム関数を追加することで問題を解決しました~/.bashrc


1
最後の部分もディストリビューションに依存します。一部のディストリビューション(たとえば、Gentoo)は実際に正しいことを行い、ファイル/etcが変更されていても上書きしません。
-njsg

1
Red Hatデリバティブも同様です。構成の変更が重要でない場合、置換構成ファイルxxxが呼び出されxxx.rpmnewます。構成の変更が本当に必要とされる場合は、元の名前が変更されるxxx.rpmsaveと、xxxパッケージからファイルです。
フォンブランド

expand-tildeが機能しないため、コンピュータから拡張を行ったコードを削除するだけになりました。システムのアップグレードではおそらく壊れますが、:|
ジャスティンL.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.