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


317

เป็นไปได้อย่างไรที่จะเปลี่ยนเปลือกเริ่มต้น envคำสั่งขณะพูดว่า:

SHELL=/bin/tcsh

และฉันต้องการเปลี่ยนสิ่งนั้นเป็น Bash


4
นี่เป็นคำถามที่ดี แต่อาจเหมาะสมสำหรับไซต์ Linux QA
BradleyDotNET

6
ตั้งไว้ใน / etc / passwd
resultsway

คำตอบ:


414

chshลองคำสั่ง linux

chsh -s /bin/bashคำสั่งที่มีรายละเอียดคือ มันจะแจ้งให้คุณป้อนรหัสผ่านของคุณ /bin/bashตอนนี้เชลล์ล็อกอินเริ่มต้นของคุณคือตอนนี้ คุณต้องออกจากระบบและลงชื่อเข้าใช้ใหม่เพื่อดูการเปลี่ยนแปลงนี้

ข้อความต่อไปนี้มาจาก man page:

คำสั่ง chsh เปลี่ยนเชลล์ล็อกอินของผู้ใช้ นี่เป็นตัวกำหนดชื่อของคำสั่งการล็อกอินครั้งแรกของผู้ใช้ ผู้ใช้ปกติสามารถเปลี่ยนล็อกอินเชลล์สำหรับบัญชีของเธอเอง superuser อาจเปลี่ยนเชลล์ล็อกอินสำหรับบัญชีใด ๆ

คำสั่งนี้จะเปลี่ยนเปลือกเข้าสู่ระบบเริ่มต้นอย่างถาวร

หมายเหตุ: หากบัญชีผู้ใช้ของคุณเป็นระยะไกลเช่นในการตรวจสอบสิทธิ์ Kerberos (เช่น Enterprise RHEL) คุณจะไม่สามารถใช้งานchshได้


10
chsh: can only change local entries; use ypchsh instead. จากนั้น ypchsh ไม่มี-sตัวเลือกใด ๆ
mahmood

10
@ShaktiMalik ฉันเชื่อว่าไฟล์กำหนดค่าเป็น/etc/passwdแต่ฉันไม่ได้ตรวจสอบอีกครั้ง
Summer_More_More_Tea

30
คุณต้องออกจากระบบและลงชื่อเข้าใช้ใหม่เพื่อดูการเปลี่ยนแปลงนี้
Neil Traft

22
ในกรณีของฉันฉันมีการเข้าถึงรูท แต่ไม่ต้องการยุ่งกับการกำหนดค่าใด ๆ บนโฮสต์จริง ผมเพิ่มexec /bin/bashไป~/.profileนี้และอนุญาตให้ฉันเข้าสู่ระบบโดยตรงกับทุบตีโดยไม่มีการเปลี่ยนแปลงใด ๆ ไปยังเซิร์ฟเวอร์ (เชลล์เริ่มต้นดั้งเดิมเป็นเพียง/bin/sh)
พอลเนลสันเบเกอร์

2
@BCqrstoO ขอบคุณสำหรับสิ่งนี้ แต่ถ้าคุณพิมพ์exitทุบตีล่ะ? คุณจะออกจากระบบเซิร์ฟเวอร์โดยตรงหรือเพียงแค่ออกจาก bash และลงใน sh และอีกอันที่exitจำเป็นในการออกจากเซิร์ฟเวอร์
Summer_More_More_Tea

148

คุณสามารถเปลี่ยนไฟล์ passwd โดยตรงสำหรับผู้ใช้เฉพาะหรือใช้คำสั่งด้านล่าง

chsh -s /usr/local/bin/bash username

จากนั้นออกจากระบบและเข้าสู่ระบบ


8
อาจเป็นความคิดที่ดีที่จะลองwhich bashก่อนที่จะเรียกใช้คำสั่งด้านบน ไมล์สะสมของคุณอาจแตกต่างกันไปตามตำแหน่ง ในกรณีของฉันพบได้ใน/bin/bash
Martin Haeberli

ฉันยังสามารถเพิ่มchshคำสั่งนั้นเป็นส่วนหนึ่งของutil-linuxแพ็คเกจ; และchsh -s $(which bash) $USERควรส่งผลเช่นเดียวกับข้างต้น

นอกจากนี้ยังมี-lตัวเลือก: "print list of shells"
Betlista

3
มันเป็นchsh -s /bin/bash usernameของฉัน
Salvatorelab

ขอบคุณ! สิ่งนี้ช่วยฉันได้เมื่อพยายามเปลี่ยนให้กับผู้ใช้คนอื่น
Tobias Feil

18

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

ถ้ามันเป็นเพียงสำหรับบัญชีของคุณเอง: ตรวจสอบ (ซ่อน) ไฟล์และ~/.profile ~/.loginหรือสร้างพวกเขาหากพวกเขาไม่อยู่ สิ่งเหล่านี้จะถูกประเมินโดยกระบวนการล็อกอิน


5
บวก 1 สำหรับการตอบคำถามโดยเฉพาะ (เชลล์เริ่มต้น) บน Red Hat Linux มีการระบุไว้ใน/etc/default/useradd
geedoubleya

@geedoubleya คุณสามารถระบุความแตกต่างในการเริ่มต้นและเปลือกเข้าสู่ระบบคืออะไร?
Betlista

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