วิธีเปลี่ยนเชลล์เริ่มต้นของคุณบน Linux ด้วย chsh

เผยแพร่แล้ว: 2022-01-29
พร้อมต์เชลล์เก๋มีสไตล์บนระบบแล็ปท็อป Linux สไตล์ Ubuntu
Fatmawati Achmad Zaenuri/Shutterstock

Bash ไม่ใช่ลินุกซ์เชลล์ตัวเดียว ง่ายต่อการลองใช้เชลล์อื่นๆ เช่น Zsh ซึ่งเป็นที่นิยมอย่างมาก เมื่อคุณพบอันที่ชอบแล้ว ให้ใช้คำสั่ง chsh เพื่อทำให้เป็นเชลล์เริ่มต้นของคุณ เราจะแสดงให้คุณเห็นว่า

ทำไมเชลล์ถึงสำคัญ

เชลล์ตั้งอยู่ระหว่างคุณกับระบบปฏิบัติการ มีสภาพแวดล้อมภายในหน้าต่างเทอร์มินัลที่ให้คุณพิมพ์คำสั่งและรันโปรแกรมได้ เชลล์ตรวจสอบข้อมูลที่คุณป้อนและค้นหาสิ่งที่คุณต้องการ หากสามารถดำเนินการเสนอราคาของคุณเองได้ หากต้องการความช่วยเหลือจากภายนอก มันจะค้นหาเส้นทางและค้นหาโปรแกรมที่สามารถทำสิ่งที่คุณร้องขอได้

มีเชลล์ที่แตกต่างกันมากมายบน Linux ทั้งหมดนี้ช่วยให้คุณทำงานหลักเดียวกันได้: สำรวจระบบไฟล์ ทำงานกับไฟล์ เปิดโปรแกรม และเรียกใช้สคริปต์ อย่างไรก็ตาม พวกเขาแต่ละคนทำงานเหล่านี้ด้วยวิธีของตนเอง และมีคุณสมบัติพิเศษและลักษณะเฉพาะของตนเอง

เปลือกหอยมักจะได้รับการออกแบบโดยผู้ที่ต้องการให้สิ่งต่าง ๆ มีพฤติกรรมในลักษณะเฉพาะ หากความคิดของคุณสอดคล้องกับนักออกแบบคนนั้น เปลือกนั้นก็อาจเหมาะกับคุณ นอกจากนี้ การลองใช้เชลล์ใหม่บน Linux นั้นทำได้ง่าย

ในลีนุกซ์ลีนุกซ์ส่วนใหญ่รวมถึงอูบุนตู, เชลล์เริ่มต้นคือ bash มันทำงานได้ดีและมีความสามารถมาก อย่างไรก็ตาม เชลล์อื่นอาจเสนอความแตกต่างที่ช่วยประหยัดเวลาซึ่งจะมีผลกระทบอย่างมากต่อเวิร์กโฟลว์ของคุณ คุณจะไม่มีทางรู้ถ้าคุณไม่มอง!

ที่เกี่ยวข้อง: ZSH คืออะไรและทำไมคุณจึงควรใช้แทน Bash

เปลือกหอยเต็มถัง

เราเคยพูดถึง Linux shells ต่างๆ กันมาก่อนแล้ว แต่ต่อไปนี้คือข้อมูลเบื้องต้นคร่าวๆ เกี่ยวกับสิ่งที่พบบ่อยที่สุด:

  • bash: เชลล์ Bourne อีกครั้งเป็นค่าเริ่มต้นในการแจกแจงจำนวนมาก
  • rbash: bash shell ที่จำกัดนี้มีฟังก์ชันการทำงานน้อยที่สุดแก่บุคคลหรือสคริปต์ที่ทำงานอยู่ในนั้น
  • เถ้า: เปลือก Almquist เป็นทุบตีรุ่นที่เบากว่า
  • dash: Debian Alquist Shell เป็นเชลล์สคริปต์เริ่มต้นใน Ubuntu แม้ว่า bash จะเป็นการเข้าสู่ระบบเริ่มต้นและเชลล์แบบโต้ตอบ แต่ dash จะใช้เพื่อเรียกใช้กระบวนการของระบบเพราะมันเบากว่า bash มาก
  • zsh: เปลือก Z เป็นรูปแบบที่ทันสมัยในตระกูล bash ของเชลล์ มีการปรับปรุงอย่างประณีต เช่น การตรวจตัวสะกดของคำสั่งและการแก้ไขที่แนะนำ
  • ปลา: เชลล์แบบโต้ตอบที่เป็นมิตรนี้เขียนขึ้นตั้งแต่ต้นและไม่ได้มาจากตระกูลเชลล์อื่นๆ มีวัตถุประสงค์เพื่อให้ใช้งานง่าย ในบรรดาข้อดีอื่น ๆ มากมาย ปลาเสนอคำแนะนำสำหรับคำสั่งตามประวัติของคุณและเนื้อหาของโฟลเดอร์ปัจจุบัน คล้ายกับข้อความคาดเดา
  • ksh: KornShell จัดเตรียมภาษาสคริปต์ที่แข็งแกร่งเป็นพิเศษ

ที่เกี่ยวข้อง: อะไรคือความแตกต่างระหว่าง Bash, Zsh และ Linux Shells อื่น ๆ

รายชื่อ Shells ที่ติดตั้ง

หากต้องการดูว่าเชลล์ใดติดตั้งอยู่ในคอมพิวเตอร์ของคุณ ให้ใช้คำสั่งนี้ มันแสดงรายการเนื้อหาของไฟล์ /etc/shells :

 cat /etc/shells 

เราได้กล่าวถึง bash , dash และ rbash แล้ว แต่ sh คืออะไร?

sh คือเปลือก Thompson ซึ่งเขียนขึ้นในปี 1971 โดย Ken Thompson จาก Bell Labs ที่มีชื่อเสียง มันไม่ได้รับการบำรุงรักษาอีกต่อไปและถูกแทนที่ด้วยกระสุนสมัยใหม่มานานแล้ว รวมไว้เพื่อรักษาความเข้ากันได้กับสคริปต์ที่เก่ากว่าซึ่งยังคงมีสิ่งต่อไปนี้เป็นบรรทัดแรก:

 #!/bin/sh

สิ่งนี้แนะนำให้ระบบใช้เชลล์ sh เพื่อรันสคริปต์ คุณมีเชลล์แบบโบราณในเครื่องของคุณจริงๆ และมันถูกใช้เพื่อรันสคริปต์ของคุณหรือไม่? คำสั่ง which จะบอกเราว่าโปรแกรมใดทำงานจริงเมื่อคุณพิมพ์คำสั่ง

มาดูกันว่ามีอะไรทำงานบ้างเมื่อคุณพิมพ์ sh :

 ซึ่งsh

ดูเหมือนว่าจะพบไบนารี หากเราขุดลึกลงไปอีกเล็กน้อย เราจะเห็นว่ามันเป็นลิงก์สัญลักษณ์ที่ชี้ไปที่ dash จริง ๆ เชลล์น้ำหนักเบาที่ใช้ในการรันสคริปต์:

 ls -l /bin/sh 

นั่นเป็นวิธีที่เรียบร้อยและน้ำหนักเบาในการจัดหาเครือข่ายความปลอดภัยสำหรับสคริปต์ที่คาดว่าจะพบใน sh ที่ทันสมัย

การติดตั้งเชลล์อื่น

มาติดตั้งเปลือก fish และตั้งเป็นค่าเริ่มต้นสำหรับ dave บน Ubuntu เราพิมพ์คำสั่งต่อไปนี้:

 sudo apt-get ติดตั้งปลา 

บน Manjaro ใช้ pacman :

 sudo pacman -ปลาซี 

บน Fedora พิมพ์ดังต่อไปนี้:

 sudo dnf ติดตั้งปลา 

โฆษณา

เมื่อการติดตั้งเสร็จสิ้น คุณสามารถตรวจสอบเชลล์ที่ติดตั้งอีกครั้ง:

 cat /etc/shells 

เชลล์ใหม่ของเราปรากฏเป็น /usr/bin/fish จดเส้นทางนั้นไว้—คุณจะต้องใช้ในไม่ช้า

ตัวแปรสภาพแวดล้อม $SHELL

ตัวแปรสภาพแวดล้อม $SHELL เก็บชื่อของเชลล์ปัจจุบันของคุณ เราสามารถตรวจสอบได้ว่าอันไหนถูกตั้งค่าด้วย echo :

 เสียงสะท้อน $SHELL

มาเริ่มกันที่เปลือก fish กัน:

 ปลา

ตอนนี้ มาตรวจสอบอีกครั้งว่าตัวแปรสภาพแวดล้อม $SHELL บอกว่าอย่างไร:

 เสียงสะท้อน $SHELL 

ครั้งแรกที่เราใช้ echo $SHELL เราอยู่ใน bash shell ตัวแปรสภาพแวดล้อมเก็บพา ธ ไปยังไฟล์ปฏิบัติการ bash /bin/bash

โฆษณา

เมื่อเราเปิดเปลือก fish เราได้รับข้อความต้อนรับที่เป็นมิตรและการเปลี่ยนแปลงพร้อมท์คำสั่ง สิ่งที่น่าแปลกใจคือ $SHELL สภาพแวดล้อมยังคงมีพาธไปยัง bash ที่สามารถเรียกทำงานได้ /bin/bash ไม่เป็นไร นี่เป็นเรื่องปกติ

เมื่อคุณเปิดเชลล์ใหม่ (หรือโปรแกรมอื่นๆ) เชลล์จะสืบทอดสภาพแวดล้อมของพาเรนต์เชลล์ ดังนั้นเปลือก fish จึงสืบทอดตัวแปรสภาพแวดล้อมทั่วโลกและส่งออกจากเปลือก bash เนื่องจากค่าในตัวแปรสภาพแวดล้อม $SHELL ไม่ได้เปลี่ยนแปลง ค่านั้นในเปลือก fish จะเหมือนกับค่าที่ทำใน bash shell

เรากำลัง fish เหมือนโปรแกรมอื่นๆ เรายังสามารถใช้ exit เพื่อออกจากเปลือก fish ได้อีกด้วย มันปิดเหมือนโปรแกรมอื่น ๆ และเรากลับไปที่ bash shell

เป็นการดีที่จะลองกระสุนใหม่ ดูว่ามันทำอะไรได้บ้าง และคุณเข้ากันได้หรือไม่ คุณสามารถสำรวจก่อนที่จะกระโดดและนำไปใช้เป็นเปลือกหอยที่คุณควรทำ

หากคุณตัดสินใจที่จะสร้าง fish —หรือเชลล์อื่นๆ— ค่าเริ่มต้นของคุณ คุณจะต้องใช้คำสั่ง chsh

คำสั่ง chsh

คำสั่ง chsh อนุญาตให้คุณเปลี่ยนเชลล์เริ่มต้นของคุณ เคล็ดลับคือการทราบว่าช่วยให้คุณสามารถเปลี่ยนทั้งการเข้าสู่ระบบเริ่มต้นและเชลล์แบบโต้ตอบเริ่มต้นได้ คุณอาจต้องการเปลี่ยนอย่างใดอย่างหนึ่ง หรือทั้งสองอย่าง

โฆษณา

เมื่อใดก็ตามที่คุณเข้าสู่ระบบเพื่อรับพรอมต์คำสั่ง คุณจะใช้เชลล์ที่กำหนดค่าให้เป็นเชลล์การเข้าสู่ระบบของคุณ เมื่อคุณเข้าสู่ระบบและเปิดหน้าต่างเทอร์มินัลแล้ว คุณจะใช้เชลล์ที่กำหนดค่าให้เป็นเชลล์แบบโต้ตอบได้ สิ่งเหล่านี้อาจเป็นเชลล์เดียวกันหรือต่างกันก็ได้

ในการตั้งค่าเชลล์การเข้าสู่ระบบของคุณ ให้ใช้ chsh โดยไม่มีพารามิเตอร์:

 chsh 

คุณได้รับพร้อมท์ให้ใส่รหัสผ่าน จากนั้น คุณต้องพิมพ์เส้นทางไปยังเชลล์ใหม่และกด Enter

หากเราทำการเชื่อมต่อระยะไกลกับคอมพิวเตอร์ทดสอบเครื่องนี้จากเครื่องอื่น เราจะพบว่าตัวเองอยู่ในเปลือก fish เมื่อเราเข้าสู่ระบบแล้ว

ในการเปลี่ยนเชลล์แบบโต้ตอบของคุณให้ใช้ chsh พร้อมตัวเลือก -s (เชลล์) ส่งเส้นทางไปยังเชลล์ใหม่บนบรรทัดคำสั่ง:

 chsh -s /usr/bin/fish 

คุณได้รับพร้อมท์ให้ใส่รหัสผ่านและกลับไปที่พรอมต์คำสั่งของเชลล์ปัจจุบันของคุณ คุณต้องออกจากระบบและกลับเข้ามาใหม่เพื่อให้การเปลี่ยนแปลงมีผล เมื่อทำเช่นนั้น คุณจะเห็นคำทักทายและพรอมต์คำสั่ง fish shell

โฆษณา

ตัวแปรสภาพแวดล้อม $SHELL จะเก็บพาธไปยังเชลล์เริ่มต้นใหม่ของคุณ:

 เสียงสะท้อน $SHELL 

การเปลี่ยน Shell ของบัญชีผู้ใช้อื่น

หากคุณมีสิทธิ์รูทและสามารถใช้ sudo ได้ คุณสามารถเปลี่ยนเชลล์ของบัญชีผู้ใช้อื่นได้ คำสั่งจะเหมือนกับเมื่อก่อน โดยเพิ่มชื่อผู้ใช้ของบุคคลนั้นในบรรทัดคำสั่ง:

 sudo chsh -s /usr/bin/fish mary 

เมื่อ mary เข้าสู่ระบบครั้งต่อไป เธอจะเห็นเชลล์ใหม่เมื่อเธอเปิดหน้าต่างเทอร์มินัล

ทุกคนมีความชื่นชอบ

ตราบใดที่คุณพอใจกับการเลือกเปลือกและมันเหมาะกับคุณ นั่นก็เยี่ยมมาก! เพียงจำไว้ว่าต้องสามารถเรียกใช้สคริปต์ทั่วไปได้ เช่น รูทีนการติดตั้ง สำหรับเชลล์ที่กล่าวถึงในที่นี้ ไม่น่าจะมีปัญหา

แน่นอน คุณยังสามารถดาวน์โหลดและติดตั้งเชลล์ใหม่ และนำไปทดสอบไดรฟ์โดยไม่ต้องทำการเปลี่ยนแปลงการกำหนดค่าใดๆ กับคอมพิวเตอร์ของคุณ เมื่อคุณพร้อมที่จะผูกปม chsh จะทำพิธีให้คุณ

ที่เกี่ยวข้อง: แล็ปท็อป Linux ที่ดีที่สุดสำหรับนักพัฒนาและผู้ที่ชื่นชอบ