ค้นหาเว็บไซต์

วิธีการเปลี่ยนเชลล์ผู้ใช้เริ่มต้นใน Linux


เชลล์หรืออินเทอร์เฟซบรรทัดคำสั่งเป็นองค์ประกอบสำคัญของระบบปฏิบัติการ Linux ทำให้ผู้ใช้มีวิธีที่มีประสิทธิภาพในการโต้ตอบกับระบบ

ผู้ใช้แต่ละคนบนระบบ Linux จะเชื่อมโยงกับเชลล์ดีฟอลต์ ซึ่งจะกำหนดตัวแปลคำสั่งที่พวกเขาใช้เมื่อโต้ตอบกับระบบ

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

ในบทความนี้ เราจะสำรวจกระบวนการเปลี่ยนเชลล์เริ่มต้นของผู้ใช้ใน Linux เชลล์เป็นโปรแกรมที่ยอมรับและตีความคำสั่ง มีเชลล์โอเพ่นซอร์สหลายตัวเช่น bash, sh, ksh, zsh, fish, และเชลล์อื่นๆ ที่ไม่ค่อยมีใครรู้จักบน Linux

ลินุกซ์ทุบตีเชลล์

Bash (/bin/bash) เป็นเชลล์ที่ได้รับความนิยมในระบบปฏิบัติการ Linux ส่วนใหญ่ (ไม่ใช่ทุกรุ่น) และโดยปกติจะเป็นเชลล์เริ่มต้นสำหรับบัญชีผู้ใช้

มีสาเหตุหลายประการในการเปลี่ยนเชลล์ของผู้ใช้ใน Linux รวมถึงสิ่งต่อไปนี้:

  • เพื่อบล็อกหรือปิดใช้งานการเข้าสู่ระบบของผู้ใช้ปกติใน Linux โดยใช้เชลล์ nologin
  • ใช้สคริปต์หรือโปรแกรมของเชลล์แรปเปอร์เพื่อบันทึกคำสั่งของผู้ใช้ก่อนที่จะถูกส่งไปยังเชลล์เพื่อดำเนินการ ที่นี่ คุณระบุ wrapper เชลล์เป็นเชลล์การเข้าสู่ระบบของผู้ใช้
  • เพื่อตอบสนองความต้องการของผู้ใช้ (ต้องการใช้เชลล์เฉพาะ) โดยเฉพาะผู้ที่มีสิทธิ์ผู้ดูแลระบบ

เมื่อสร้างบัญชีผู้ใช้ด้วยยูทิลิตี useradd หรือ adduser สามารถใช้แฟล็ก --shell เพื่อระบุชื่อของเชลล์การเข้าสู่ระบบของผู้ใช้นอกเหนือจากที่ระบุไว้ในไฟล์การกำหนดค่าที่เกี่ยวข้อง

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

แสดงรายการเชลล์ที่พร้อมใช้งานบนระบบ Linux

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

หากต้องการดูรายการเชลล์ที่พร้อมใช้งานบนระบบ Linux คุณสามารถใช้คำสั่งต่อไปนี้:

cat /etc/shells

ผลลัพธ์ตัวอย่าง:

/etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/tmux
/usr/bin/screen

ก่อนที่คุณจะดำเนินการใดๆ เพิ่มเติม โปรดทราบว่า:

  • ผู้ใช้สามารถเปลี่ยนเชลล์ของตนเองเป็นอะไรก็ได้: ซึ่งจะต้องแสดงอยู่ในไฟล์ /etc/shells
  • มีเพียงรูทเท่านั้นที่สามารถรันเชลล์ที่ไม่อยู่ในรายการในไฟล์ /etc/shells
  • หากบัญชีมีเชลล์การเข้าสู่ระบบแบบจำกัด มีเพียงรูทเท่านั้นที่สามารถเปลี่ยนเชลล์ของผู้ใช้นั้นได้

ค้นหาเชลล์ปัจจุบันใน Linux

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

echo $SHELL

/bin/bash

ผลลัพธ์แสดงว่าผู้ใช้กำลังใช้เชลล์ Bash (/bin/bash)

การเปลี่ยนเชลล์เริ่มต้นใน Linux

ตอนนี้เรามาพูดถึงสามวิธีในการเปลี่ยนเชลล์ผู้ใช้เริ่มต้นของ Linux

1. ยูทิลิตี้ usermod

คำสั่ง usermod ใช้สำหรับแก้ไขรายละเอียดบัญชีของผู้ใช้ ซึ่งจัดเก็บไว้ในไฟล์ /etc/passwd และตัวเลือก -s หรือ --shell ใช้เพื่อเปลี่ยนเปลือกเข้าสู่ระบบของผู้ใช้

ในตัวอย่างนี้ ก่อนอื่นเราจะตรวจสอบข้อมูลบัญชีของผู้ใช้ tecmint เพื่อดูเชลล์การเข้าสู่ระบบเริ่มต้น จากนั้นเปลี่ยนเชลล์การเข้าสู่ระบบจาก /bin/sh เป็น /bin/bash เป็น ดังต่อไปนี้

grep tecmint /etc/passwd
sudo usermod --shell /bin/bash tecmint
grep tecmint /etc/passwd

ตอนนี้เชลล์เริ่มต้นสำหรับผู้ใช้ “tecmint” จะถูกเปลี่ยนเป็น bash

2. ยูทิลิตี้ chsh

คำสั่ง chsh ใช้เพื่อเปลี่ยนเชลล์การเข้าสู่ระบบเริ่มต้นของผู้ใช้แบบโต้ตอบโดยใช้ตัวเลือก -s หรือ –shell ตามที่แสดง

grep tecmint /etc/passwd
sudo chsh --shell /bin/sh tecmint
grep tecmint /etc/passwd

แทนที่ “/bin/sh” ด้วยเส้นทางจริงไปยังเชลล์ที่คุณต้องการตั้งค่า ตัวอย่างเช่น หากต้องการตั้งค่าเชลล์เป็น sh คุณจะต้องใช้ “/bin/sh

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

สองวิธีข้างต้นทั้งหมดแก้ไขเชลล์ที่ระบุในไฟล์ /etc/passwd ซึ่งคุณสามารถแก้ไขได้ด้วยตนเองเช่นเดียวกับวิธีที่ 3 ด้านล่าง

3. เปลี่ยน User Shell ในไฟล์ /etc/passwd

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

sudo vi /etc/passwd
OR
sudo nano /etc/passwd

ค้นหาบรรทัดที่สอดคล้องกับผู้ใช้ที่คุณต้องการเปลี่ยนเชลล์เริ่มต้น ตัวอย่างเช่น หากบรรทัดมีลักษณะดังนี้:

tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/bash

ฟิลด์สุดท้าย /bin/bash แสดงถึงเชลล์เริ่มต้น (ในกรณีนี้คือ Bash)

หากต้องการเปลี่ยนค่าของฟิลด์เชลล์เป็นเชลล์ที่ต้องการ เพียงระบุเส้นทางไปยังเชลล์ (/bin/zsh) ดังที่แสดง

tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/zsh

เมื่อแก้ไขเสร็จแล้ว ให้บันทึกและปิดไฟล์

จะติดตั้งเชลล์อื่นได้อย่างไร

เช่นเดียวกับแพ็คเกจซอฟต์แวร์อื่นๆ สามารถติดตั้งเชลล์ยอดนิยม เช่น Zsh และ Fish ได้อย่างง่ายดายจากพื้นที่เก็บข้อมูลของการแจกจ่ายของคุณดังที่แสดง

ติดตั้ง Zsh Shell ใน Linux

หากต้องการติดตั้ง Zsh บน Linux ให้ใช้คำสั่งที่เหมาะสมต่อไปนี้สำหรับการแจกจ่าย Linux เฉพาะของคุณ

sudo apt install zsh         [On Debian, Ubuntu and Mint]
sudo yum install zsh         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/zsh  [On Gentoo Linux]
sudo apk add zsh             [On Alpine Linux]
sudo pacman -S zsh           [On Arch Linux]
sudo zypper install zsh      [On OpenSUSE]    

ติดตั้ง Fish Shell ใน Linux

หากต้องการติดตั้ง Zsh บน Linux ให้ใช้คำสั่งที่เหมาะสมต่อไปนี้สำหรับการแจกจ่าย Linux เฉพาะของคุณ

sudo apt install fish         [On Debian, Ubuntu and Mint]
sudo yum install fish         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/fish  [On Gentoo Linux]
sudo apk add fish             [On Alpine Linux]
sudo pacman -S fish           [On Arch Linux]
sudo zypper install fish      [On OpenSUSE]    

อย่าลืมอ่านหัวข้อที่เกี่ยวข้องเหล่านี้:

ในบทความนี้ เราได้อธิบายวิธีการต่างๆ ในการเปลี่ยนเชลล์ของผู้ใช้ใน Linux หากต้องการแบ่งปันความคิดเห็นกับเรา โปรดใช้ส่วนความคิดเห็นด้านล่าง