Tự động hoàn tất không hoạt động trong khi đăng nhập bằng root


23

Tôi vừa bắt gặp một cái gì đó thực sự làm phiền tôi. Tự động hoàn tất trên ubfox hoạt động như một bùa mê nhưng khi tôi đăng nhập bằng root, ví dụ đôi khi sutôi tabchỉ tự động hoàn thành.

Tại sao nó hoạt động như vậy? Có thể thay đổi điều đó?


Bạn đang thực sự đăng nhập bằng root, hoặc sử dụng sudo su?
Marty Fried

@MartyFried Có tôi là diong sudo su. Sự khác biệt là gì?
Patryk

Nó dường như hoạt động với tôi, bạn có thể cung cấp cho chúng tôi một ví dụ cụ thể khi nó không hoạt động, thứ gì đó mà chúng tôi có thể sao chép.
ste_kwr

1
@lordmonkey: Có lẽ không, tôi không chắc lắm. Tôi nghĩ rằng su hoặc sudo su tự nó có một chút khác biệt theo một cách nào đó mà tôi không nhớ, vì vậy tôi muốn đảm bảo rằng tôi có thể kiểm tra điều này trong cùng điều kiện. Có vẻ như nó hoạt động, nhưng bạn đã nói "đôi khi", vì vậy tôi chỉ có thể đề nghị bạn kiểm tra lại và cố gắng làm cho nó có thể tái tạo được, hoặc chỉ đảm bảo rằng không có điều gì khác xảy ra đang đánh lừa bạn - tức là lỗi người dùng - hey, nó xảy ra với tất cả mọi người! :)
Marty Fried

Câu trả lời:


41

Kiểm tra /root/.bashrctệp của bạn cho những dòng này

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

Nếu chúng không tồn tại, hãy thêm chúng vào cuối tệp bằng trình soạn thảo văn bản yêu thích của bạn.


Mine .bashrc chứa các dòng được đề cập nhưng chúng đã được nhận xét; không ghi chú các dòng và có nguồn gốc .bashrc mới; bây giờ mọi thứ trông khá tốt
Ankit

Các bash_completiondòng, ít nhất là trong trường hợp của tôi, được nhận xét ra, bởi vì nó khẳng định bash_completionđã được kích hoạt trong /etc/bash.bashrc, nhưng tập tin đó cũng có mà dòng chú thích. Thay vì bỏ ghi chú vào etctập tin, tốt hơn hết là bỏ ghi chú vào dòng /root/.bashrc.
Peregring-lk

7

Bạn chưa đề cập đến phiên bản Ubuntu nào bạn sử dụng.

  • Kiểm tra xem bạn đã bash-completioncài đặt gói chưa:

    sudo apt-get install bash-completion
  • Của tôi hoạt động nếu tôi đăng nhập bằng cách sử dụng: sudo -i


Điểm loại bỏ .bashrc của root là gì?
geirha

Tôi nghĩ rằng nó sẽ tạo lại .bashrc mặc định khi đăng xuất / đăng nhập tiếp theo. Hoặc có lẽ nó có thể chứa một số loại "hủy kích hoạt" để tự động hoàn thành (không biết nếu có thể). Tôi không thể nhớ lý do thực tế tôi đã viết nó xuống mặc dù.
Savvas Radevic

2
Không, một cái mới .bashrcsẽ không được tạo và /etc/bash_completionsẽ không có nguồn gốc, chỉ có hoàn thành mặc định của bash mới khả dụng.
geirha

OK, chỉnh sửa và loại bỏ. Cảm ơn về thông tin bạn vừa nhập! Mặc dù tôi tự hỏi, nếu ~ / .bashrc có thể "unsource" một tập tin hoặc nếu disable-completionvẫn còn có sẵn: superuser.com/questions/37148/...
Savvas Radevic

3

Đối với Ubuntu 13.10, kiểm tra /etc/bash.bashrccho

# 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

Họ có thể được bình luận. Không bình luận họ làm việc.


0

Tìm thấy rằng điều này làm việc (tương tự như các câu trả lời ở trên nhưng với một twist)

Tệp cần được chỉnh sửa (ít nhất là trong trường hợp của tôi với 12.04) là /root/.bashrc. Điều này có ý nghĩa trong trường hợp của tôi, cho rằng người dùng thường xuyên của tôi đã tự động hoàn thành tốt nhưng root của tôi thì không.

Dù sao trong tập tin nói tôi đã tìm thấy tất cả các mã cần thiết nhưng nó đã được nhận xét:

# 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

Chỉ cần không bình luận nó:

# 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

Đã lưu, và nó hoạt động tốt.

Hy vọng điều này sẽ giúp được ai đó.


0

Trong Linux Mint 18 (dựa trên Xenial), bạn phải chỉnh sửa bashrc của mình:

sudo nano /etc/bash.bashrc

và nhận xét (loại bỏ #ở phía trước mỗi dòng) phần này:

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

Đó là tất cả.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.