ในเซิร์ฟเวอร์ของฉันพรอมต์คือ [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: คุณเป็นอย่างไรบ้าง)