เปลี่ยนเชลล์จาก zsh เป็น bash


17

เว็บเซิร์ฟเวอร์ของฉันถูกดัดแปลงโดยคนที่ใช้ zsh shell ฉันรู้สึกสะดวกสบายมากขึ้นเมื่อใช้ bash shell เนื่องจากเป็นค่าเริ่มต้นที่มาพร้อมกับ Ubuntu และ OS X (ระบบปฏิบัติการหลักสองระบบที่ฉันใช้) แต่คำถามนี้เน้นไปที่เซิร์ฟเวอร์ Ubuntu ฉันมี 4 เว็บไซต์ที่ทำงานบนเว็บเซิร์ฟเวอร์นี้ฉันใช้ byobu ฉันใช้ tmux ฉันใช้ ruby ​​/ ruby ​​บนราง, node.js, apache, daemons สองสามตัว หากฉันเปลี่ยนรูทเชลล์ปัจจุบันจาก zsh ไปเป็น bash อาจมีผลข้างเคียงเชิงลบใด ๆ ที่อาจเป็นผลมาจากสวิตช์นี้หรือไม่? ตัวอย่างเช่นกระบวนการจะถูกฆ่าเนื่องจากกระบวนการหลัก (เชลล์) ถูกเปลี่ยนไปหรือไม่


คุณถามเกี่ยวกับผลของการเปลี่ยนแปลง (ซึ่งไม่ใช่ฉันกำลังใช้ zsh ในขณะนี้และสามารถเปลี่ยนไปใช้ทุบตีได้ทุกเมื่อที่ต้องการ) หรือคุณถามว่าจะเปลี่ยนเชลล์ได้อย่างมีประสิทธิภาพหรือไม่?
Braiam

@Braiam ฉันกังวลเกี่ยวกับผลของการเปลี่ยนแปลง หากไม่มีผลกระทบฉันจะเปลี่ยนแปลง ฉันแค่คิดว่าเชลล์เป็นกระบวนการหลักของ daemons เหล่านี้บางอย่างเช่น apache และถ้าฉันเปลี่ยนจากมันมันจะฆ่ากระบวนการ apache แต่ฉันเดาว่าฉันผิด
JohnMerlino

คำตอบ:


10

เปลี่ยนเปลือกของคุณผ่านทางจะมีการเปลี่ยนแปลงข้อมูลในเปลือกsudo chsh --shell=/bin/bash $USER /etc/passwdค่านี้จะได้รับการพิจารณาเมื่อเข้าสู่ระบบเท่านั้นเมื่อระบบไม่ทราบว่าจะใช้เชลล์ใดสำหรับคุณ

กระบวนการทำงานไม่ว่าจะเป็นที่ตั้งขึ้นโดยzsh, bash apacheหรือevil_overlord's_programจะไม่ได้รับผลกระทบ


เชลล์ไม่ใช่กระบวนการพาเรนต์ของกระบวนการอื่นที่รันอยู่หรือว่าแค่เทอร์มินัลการควบคุม (และไม่ใช่เชลล์) จะถือว่าเป็นกระบวนการหลักใช่หรือไม่
JohnMerlino

loginโปรแกรมทำงานในกระบวนการเหมือนทุกอย่าง เมื่อมันยอมให้คุณเข้าไปมันก็จะสร้างโพรเซสอื่นด้วย UID ของคุณ ฯลฯ และรัน / bin / bash (จาก / etc / passwd) bash shell อ่านจาก STDIN (ตั้งค่าโดยlogin) และจะแยก / exec คำสั่งที่ไม่ใช่ builtin รอให้พวกเขายกเลิกและวนซ้ำคำสั่งเพิ่มเติม แนวคิดของ "การควบคุม terminal" ไม่มีประโยชน์ใน Unix / Linux
waltinator

26

คำตอบจาก Stack Overflow ( เปลี่ยนจาก zsh เป็น bash ):

คุณสามารถใช้ exec เพื่อแทนที่เชลล์ปัจจุบันของคุณด้วยเชลล์ใหม่:

เปลี่ยนเป็นทุบตี:

exec bash

เปลี่ยนเป็น zsh:

exec zsh

สิ่งนี้จะไม่กระทบกับหน้าต่างเทอร์มินัลใหม่หรือสิ่งใด ๆ


ไม่ทำงาน. ยังคง: echo $ SHELL / usr / bin / zsh
ses

8

เปิดเทอร์มินัลของคุณและใช้คำสั่งต่อไปนี้:

chsh -s $(which bash)

ฉันคิดว่านี่เทียบเท่า chsh -s / bin / bash
JohnMerlino

2
which bashจะให้เส้นทางที่แน่นอนของbashดังนั้นมันจะเหมือนกันถ้า/bin/bashเป็นที่bashตั้ง
ryanjdillon

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