การเติมข้อความอัตโนมัติที่ไม่ถูกต้อง


9

ฉันกำลังเรียกใช้ Debian Wheezy 64 บิต

ฉันมีปัญหากับการเติมข้อมูลอัตโนมัติให้ได้ ฉันติดตั้ง bash-เสร็จแล้ว

หากฉันเข้าสู่ระบบในฐานะรูทในเชลล์ฉันสามารถใช้การเติมอัตโนมัติสำหรับ apt-get (เช่นapt-get install wicd [tab] [tab ]) และมันจะแสดงแพ็คเกจทั้งหมดที่ตรงกับที่ฉันทำ แต่ถ้าฉันพยายามที่จะใช้การทำให้สมบูรณ์อัตโนมัติสำหรับ apt-get ในผู้ใช้ที่ไม่ใช่รูทคนอื่น (แม้กระทั่ง sudo) มันจะไม่ทำงานเลย ฉันสามารถเติมสิ่งอื่น ๆ โดยอัตโนมัติเช่นชื่อไฟล์

ความช่วยเหลือใด ๆ

ฉันมีรหัสต่อไปนี้ใน. bashrc และ / etc / profile

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

1
ขั้นแรกตรวจสอบว่ารูทและผู้ใช้รายอื่นมีเชลล์เดียวกันหรือไม่ ถ้าไม่ใช่นั่นเป็นสาเหตุของพฤติกรรมที่แตกต่าง หรือลองใช้วิธีนี้: 'apt-cache - no-generate pkgnames "wicd"' ใช้งานได้หรือไม่ นั่นคือสิ่งที่ทุบตีใช้เพื่อสร้างความสมบูรณ์ของ 'apt-get install wicd [TAB]'
angus

พวกเขาทั้งคู่ใช้เชลล์ตัวเดียวกันทุบตี คำสั่ง apt-cache ที่คุณให้ฉันทำงานและแสดงรายการแพ็คเกจ wicd ทั้งหมด นอกจากนี้สิ่งที่ฉันค้นพบคือเมื่อคอมพิวเตอร์บูทครั้งแรกและฉันเข้าสู่เชลล์เป็นครั้งแรก (ฉันไม่มีการล็อกอิน gui) การเติมข้อความอัตโนมัติ apt-get จะทำงานกับบัญชีใด ๆ แต่ถ้าฉันเรียกใช้ตัวจัดการหน้าต่าง fvwm-crystal ของฉันกับ startx จากนั้นเปิดเทอร์มินัลมันจะไม่ทำงานอีกครั้งด้วยบัญชีผู้ใช้ของฉัน มันยังคงทำงานกับรูตใน fvwm-crystal
Dennis Linuz

ตกลงนี่คือสิ่งที่สามารถเกิดขึ้นได้ / etc / profile และ. bash_profile ถูกรันบนเชลล์ล็อกอิน นั่นคือเมื่อคุณเข้าสู่ระบบบนคอนโซลหรือเมื่อคุณเรียกใช้ 'su' เนื่องจากในกรณีเหล่านี้ทำงานได้เสร็จสมบูรณ์ / etc / profile ทำงาน สิ่งที่เหลืออยู่คือ ~ / .bashrc ตรวจสอบว่าบรรทัด ' / etc / bash_completion 'กำลังถูกดำเนินการจริง ๆ วางบางสิ่งเช่น 'echo OK' ไว้ข้างหน้าเปิดเทอร์มินัลใหม่และตรวจสอบว่า 'ตกลง'
angus

คุณเคยทดสอบ ZSH ไหม?
Mohammad Efazati

. bashrc ของคุณอาจหายไปอย่างสมบูรณ์ นี่เป็นกรณีของฉัน
Galvani

คำตอบ:


6

/etc/bash_completionไฟล์ของคุณจะต้องหายไป

sudo apt-get install bash-completion

ควรแก้ปัญหาทั้งหมดของคุณ

เนื่องจากคุณมีบรรทัดที่ไม่ใส่เครื่องหมายข้อคิดเห็นใน/etc/bash.bashrcขณะที่ Faheem 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-completionและทุกอย่างเป็นเวอร์ชั่นล่าสุดแล้ว แต่ไฟล์ bash completion ของฉันว่างเปล่า
fifamaniac04


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 ของคำสั่งจะทำผ่านcompleteคำสั่ง คุณควรมีสคริปต์ apt-get complete ที่โหลดโดยผู้ใช้รูท bashrc (อาจเป็น /root/.bashrc) ดังนั้นคุณต้องใช้รูทล็อกอินเพื่อรันมัน Sudo ไม่ได้โหลดสคริปต์การเข้าสู่ระบบรูทมันให้สิทธิ์พิเศษแก่คุณ

บางทีคุณอาจพลาดสคริปต์การเติมข้อมูลอัตโนมัติสำหรับผู้ใช้ที่ไม่ใช่รูทดังนั้นพวกเขาจึงไม่มีการกำหนดค่าการเติมข้อความอัตโนมัติแบบทุบตีสำหรับ apt-get หากเป็นจริงให้โหลดฟังก์ชั่นสำหรับผู้ใช้ที่มีสิทธิ์ทั้งหมดภายในไฟล์ sudoers

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.