ในเซิร์ฟเวอร์ของฉันพรอมต์คือ [user @ host path] ... และฉันสามารถกด "แท็บ" เพื่อเติมเส้นทางโดยอัตโนมัติได้
แต่สำหรับเซิร์ฟเวอร์ Ubuntu ตัวใหม่ของฉันมันเป็นเพียงสัญลักษณ์ดอลลาร์?
ในเซิร์ฟเวอร์ของฉันพรอมต์คือ [user @ host path] ... และฉันสามารถกด "แท็บ" เพื่อเติมเส้นทางโดยอัตโนมัติได้
แต่สำหรับเซิร์ฟเวอร์ Ubuntu ตัวใหม่ของฉันมันเป็นเพียงสัญลักษณ์ดอลลาร์?
คำตอบ:
เมื่อคุณถามคำถามสองข้อฉันจะตอบทั้งสองข้อ
เพราะเปลือกคุณไม่สนับสนุนหรือไม่ได้เปิดใช้งานการเติมแท็บ
ในการแก้ไขปัญหานี้คุณต้องค้นพบว่าเชลล์ของคุณคืออะไร บนเครื่องที่คุณชอบใช้งาน
echo $SHELL
คุณอาจเห็นร่วมกัน/bin/bashหรือสิ่งที่น้อยเหมือนกันเช่น/bin/tcsh, /bin/zshหรือสิ่งอื่นทั้งหมด
ตอนนี้คุณสามารถเปลี่ยนเชลล์บนเครื่อง Ubuntu ได้แล้ว บนเครื่องนั้นก่อนอื่นตรวจสอบให้แน่ใจว่ามีเชลล์ที่คุณต้องการอยู่ เนื่องจากเชลล์อาจไม่อยู่ในตำแหน่งเดียวกันบนเครื่อง Ubuntu เหมือนกับที่อื่นให้ตรวจสอบตำแหน่งโดยพิมพ์
which bash
นี้จะให้เส้นทางของเปลือกที่คุณต้องการบางอย่างเช่น/bin/bash, หรือ/usr/bin/bash /usr/local/bin/bashแน่นอนถ้าคุณต้องการเปลือกอื่น ๆ กว่าทุบตีคุณจะพูดwhich tcsh, which zshหรือที่คล้ายกัน
หากคุณไม่เห็นเส้นทาง แต่เห็นแทนคุณbash not foundจะต้องติดตั้งแพ็คเกจที่เหมาะสมและใช้อีกครั้งwhichเพื่อค้นหาตำแหน่งที่ติดตั้งเชลล์
ด้วยเส้นทางของเชลล์ที่คุณเลือกคุณสามารถเปลี่ยนเชลล์ได้ในที่สุดโดยการรัน
chsh -s /bin/bash
แทนที่/bin/bashด้วยเส้นทางที่เหมาะสมสำหรับเชลล์ที่คุณเลือก
เพราะตัวแปรสภาพแวดล้อมที่รวดเร็วของคุณ$PS1, $PS2และอื่น ๆ สิ่งเหล่านี้ไม่น่าจะพกพาได้ระหว่างเชลล์ดังนั้นนี่คือลิงค์สำหรับผู้สมัครที่มีแนวโน้ม:
bashมีคู่มือที่ครอบคลุมโดยมีหน้าต่างๆในตัวแปร Bash (รวมถึงPS1& & c) และการพิมพ์พรอมต์ (ซึ่งอธิบายPROMPT_COMMANDชื่อที่มีความยาวสำหรับPS1) เพิ่มบรรทัดต่อไปนี้ใน~/.bashrc
export PS1='[\u@\h \w] '
tcshมีคู่มือออนไลน์ (แค่หน้าคน) พร้อมกับส่วนที่เกี่ยวกับตัวแปรสภาพแวดล้อมที่พรอมต์ เพิ่มบรรทัดต่อไปนี้ใน~/.tcshrc
set prompt='[%n@%m %~] '
zshมีคู่มือผู้ใช้พร้อมคำแนะนำง่ายๆในการแจ้งเตือนรวมทั้งคู่มือโดยมีการอ้างอิงโดยละเอียดเกี่ยวกับการขยายพร้อมท์ เพิ่มบรรทัดต่อไปนี้ใน~/.zshrc
export PS1='[%n@%m %~] '
Bash ไม่ใช่เปลือกเท่านั้น
ปัญหาของคุณอาจเป็นเรื่องง่าย ๆ ที่ไม่มี. profile หรือ. bashrc ที่ตั้งค่า PS1 หรืออาจเป็นได้ว่าเชลล์ล็อกอินของคุณไม่ได้ถูกทุบตีเลย
Bash ใช้gnu readlineสำหรับสิ่งต่าง ๆ เช่นการเติมเต็มของแท็บ นี่เป็นเรื่องที่ซับซ้อนและ readline แม้จะมีไฟล์กำหนดค่าต่อผู้ใช้
ดูman bash, และman sh ตอบสนองการทุบตีman 3 readline --versionบนระบบลินุกซ์จำนวนมาก/bin/shไม่จริงทุบตี ashแต่มักจะเป็นรุ่นของคนพิการ
dashแทนash? ฉันคิดว่าฉันอ่านบางอย่างเช่นนี้
ฉันเดาว่าคุณไม่ได้ใช้ bash แต่ sh และการแจ้งเตือนของคุณไม่ได้ตั้งอย่างถูกต้อง (ถ้าเป็นไปได้ด้วย sh)
คุณสามารถรับเชลล์ปัจจุบันได้โดยพิมพ์: echo $SHELL
หากคุณต้องการเริ่มทุบตีเพียงพิมพ์ bash
shมีเปลือกไม่เรียกว่าเป็น สะท้อนจะพิมพ์ตัวแปรสภาพแวดล้อมที่เรียกว่า$SHELL SHELLตัวแปรสภาพแวดล้อมนี้ชี้ไปที่เปลือกหอยและตั้งค่าโดยการทุบตีเท่านั้น มันไม่มีประโยชน์โดยประมาณในการพิจารณาว่าเชลล์ใดที่ทำงานอยู่ซึ่งบ่งบอกได้เพียงเล็กน้อยว่าผู้ปกครองบางส่วนของกระบวนการปัจจุบันอาจถูกทุบตี
/bin/shใช่ shแต่ฉันรู้ว่าของเปลือกไม่มีชื่อซึ่งเป็น ฉันสามารถคิดash, ksh, csh, bash, และzsh tcshอันแรกคือ / bin / sh ปกติบน linux และ NetBSD, สุดท้ายคือเชลล์ FreeBSD ปกติ, และอื่น ๆ เป็น shell ตัวเลือก สภาพแวดล้อมเดสก์ท็อปจำนวนมากเปลี่ยนเชลล์ล็อกอินของผู้ใช้เป็นทุบตีในขณะที่ปล่อย / bin / sh ไว้เป็นเถ้า
shเป็นเชลล์เป้าหมาย en.wikipedia.org/wiki/Bourne_shellบางระบบ (Solaris) ยังคงมาพร้อมกับเวอร์ชันของ Bourne shell ที่ไม่ได้เป็นเพียงสำเนาของการนำกลับมาใช้ใหม่อย่างใดอย่างหนึ่ง (ash, dash, bash, ksh, zsh)
คุณต้องตั้งค่าตัวแปรที่เรียกว่า PS1 บนหนึ่งในสคริปต์การเข้าสู่ระบบของคุณตัวอย่างเช่น / etc / profile หรือ ~ / .bashrc มันจะขึ้นอยู่กับการกระจายของคุณ
ตัวอย่าง: http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.htmlตัวอย่าง
pwdเพื่อพิมพ์ชื่อของไดเรกทอรีทำงานปัจจุบัน และคุณกำลังพูดว่า Tab-เสร็จสิ้นไม่ทำงานเช่นกัน? (ในบางเครื่องที่ฉันใช้ฉันจะได้รับพรอมต์สั้น ๆ ก็ต่อเมื่อฉันเข้าสู่ระบบในฐานะ root และฉันก็ปล่อยให้มันเป็นคำเตือนที่ดีอย่างมีความสุขเช่นเดียวกับที่ไม่ค่อยจะมีการเข้าสู่ระบบในฐานะ root: คุณเป็นอย่างไรบ้าง)