apt-getオートコンプリート


9

現在64ビットのDebian Wheezyを実行しています。

apt-getの自動補完に問題があります。bash-completionがインストールされています。

シェルでrootとしてログインしている場合、apt-getの自動補完を使用して(例:apt-get install wicd [tab] [tab ])、それに一致するすべてのパッケージが表示されます。しかし、(sudoを使用していても)別の非rootユーザーでapt-getに自動補完を使用しようとすると、まったく機能しません。ファイル名のような他のものを自動補完できます。

何か助けは?

.bashrcと/ etc / profileに次のコードがあります

 if [ -f /etc/bash_completion ]; then
      . /etc/bash_completion
 fi

1
まず、rootと他のユーザーが同じシェルを持っているかどうかを確認します。そうでない場合は、それが異なる動作の理由です。それ以外の場合は、「apt-cache --no-generate pkgnames "wicd"」を試してください。うまくいきますか?これが、bashが「apt-get install wicd [TAB]」の完了を生成するために使用するものです。
アンガス

どちらも同じシェルbashを使用しています。あなたが私に与えたapt-cacheコマンドは機能し、すべてのwicdパッケージのリストを表示します。また、私が見つけたのは、コンピューターが最初に起動し、初めてシェルにログインしたとき(私はGUIログインを持っていません)、apt-getオートコンプリートはどのアカウントでも機能します。しかし、fxwm-crystalウィンドウマネージャーをstartxで実行してからターミナルを開くと、ユーザーアカウントだけでは再び機能しません。それはまだfvwm-crystalのrootで動作します。
Dennis Linuz

OK、これは何が起こっている可能性があります。/ etc / profileと.bash_profileはログインシェルで実行されます。つまり、コンソールにログインしたとき、または「su」を実行したときです。これらのケースでは補完が機能するため、/ etc / profileが機能しています。残っているのは〜/ .bashrcです。行 'を確認してください。/ etc / bash_completion 'は実際に実行されています。その前に「echo OK」のようなものを置き、新しいターミナルを開いて、「OK」と表示されていることを確認します。
アンガス

ZSHをテストしたことがありますか?
Mohammad Efazati 2012年

.bashrcが完全に欠落している可能性があります。これは私のケースでした
Galvani

回答:


6

あなたの/etc/bash_completionファイルが欠落していることが必要です。

sudo apt-get install bash-completion

すべての問題を解決する必要があります。

/etc/bash.bashrcFaheem Mithaや他の人が指摘したように、すでにコメントが外されている行があるので、今は機能するはずです。

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

理由:bash-completionパッケージには現在そのファイル(/ etc / bash_completion)があります。以前はbashパッケージに含まれていましたが、現在は含まれていません。

パッケージ変更に関する情報


/ etc / bash_completionファイルには何が必要ですか?私が走ったのbash-完了インストールコマンドを、すべてがすでに最新バージョンですが、私のbashの補完ファイルが空である
fifamaniac04

2

これを実行してみてください:

chsh -s /bin/bash $USER

1

私はこれが必要な場合に覚えて、しかしから対応する行をコメントアウトしてみてくださいすることはできません/etc/bash.bashrcまだコメント解除されていない場合、すなわち、

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

0

私が覚えているように、コマンドparammetersのbashオートコンプリートはコマンドを介して行われcompleteます。rootユーザーbashrc(たぶん/root/.bashrc)によってロードされたapt-get完了スクリプトが必要なので、実行するにはrootログインが必要です。Sudoはrootログインスクリプトをロードせず、特権を与えるだけです。

root以外のユーザー用のオートコンプリートスクリプトがないため、apt-get用に構成されたbashオートコンプリートがない可能性があります。これが当てはまる場合は、sudoersファイル内のすべての特権を持つユーザーのためにその関数をロードします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.