ルートとしてログインしているときにオートコンプリートが機能しない


23

私は本当に私を悩ませている何かに出会いました。Ubuntuの上の自動補完は魔法のように動作しますが、私は、rootとしてログインしたときに、例えばsuIもらうtabだけ時々自動補完を。

なぜそれがそのように機能するのですか?それを変更できますか?


実際にルートとしてログインしていますか、それともsudo suを使用していますか?
マーティフライド

@MartyFriedはい、私はdiong sudo suです。違いはなんですか?
パトリク

うまくいくように思えますが、うまくいかないときの特定のインスタンスを提供していただけますか?
ste_kwr

1
@lordmonkey:たぶん、私にはよくわかりません。suまたはsudo su自体は、覚えていない点で少し違うと思うので、同じ条件でこれを確認できるようにしたかったのです。動作しているように見えますが、あなたは「時々」と言ったので、ダブルチェックして再現可能にすることを提案するか、あなたをだましている他の出来事がないことを確認してください-つまり、ユーザーエラー-ねえ、それは皆に起こる!:)
マーティフライド

回答:


41

/root/.bashrcこれらの行についてファイルを確認してください

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

存在しない場合は、お気に入りのテキストエディターを使用してファイルの末尾に追加します。


私の.bashrcには上記の行が含まれていましたが、コメントアウトされていました。行のコメントを外し、新しい.bashrcを取得しました。物事は今かなりよさそうだ。
アンキット

bash_completionラインは、私の場合は、少なくとも、それが主張しているため、コメントアウトしてbash_completionすでに有効になっている/etc/bash.bashrcが、そのファイルには行がコメントアウトこともあります。etcファイルのコメントを解除する代わりに、の行のコメントを解除することをお勧めします/root/.bashrc
Peregring-lk

7

どのUbuntuバージョンを使用しているかについては触れていません。

  • bash-completionパッケージがインストールされているかどうかを確認します。

    sudo apt-get install bash-completion
  • 私は次を使用してログインすると機能します: sudo -i


ルートの.bashrcを削除する意味は何ですか?
ガイラ

次回のログアウト/ログイン時にデフォルトの.bashrcを再生成すると思います。または、オートコンプリート用の何らかの「非アクティブ化」が含まれている可能性があります(可能かどうかわからない)。しかし、書き留めた実際の理由は思い出せません。
サヴァスラデビッチ

2
いいえ、新しいもの.bashrcは作成され/etc/bash_completionず、ソースも提供されません。bashのデフォルトの補完のみが利用可能です。
ガイラ

OK、編集して削除しました。ご意見ありがとうございます!私は疑問に思うけどもし〜/ .bashrcの缶「unsource」ファイルまたは場合はdisable-completion、まだ提供されています:superuser.com/questions/37148/...
サヴァスRadevic

3

Ubuntu 13.10の場合は/etc/bash.bashrc

# enable bash completion in interactive shells
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

コメントされる可能性があります。コメントを外すと機能します。


0

これが機能していることがわかりました(上記の回答と同様ですが、ひねりが加えられています)

編集する必要があるファイル(少なくとも私の場合は12.04)は/root/.bashrcでした。私の場合、これは理にかなっています。通常のユーザーはうまくオートコンプリートしていましたが、私のルートはそうではありませんでした。

とにかく上記のファイルで必要なコードをすべて見つけましたが、コメントアウトされています:

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    #. /etc/bash_completion
#fi

コメントを外してください:

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

保存し、問題なく動作しました。

これが誰かを助けることを願っています。


0

Linux Mint 18(Xenialベース)では、bashrcを編集する必要があります。

sudo nano /etc/bash.bashrc

#このセクションをコメントアウトします(各行の前を削除します)。

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

それで全部です。

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