วิธีการเปลี่ยนจาก csh เป็น bash เป็นเชลล์เริ่มต้น


34

ฉันมีเปลือกเริ่มต้นของฉันที่แสดงโดยcsh echo $SHELLฉันต้องการที่จะเปลี่ยนbashเป็นเปลือกเริ่มต้นของฉัน ฉันลองวิธีต่อไปนี้เพื่อไม่เกิดประโยชน์:

  1. ด้วยchshฉันได้รับ:

    chsh: can only change local entries; use ypchsh instead.
  2. ด้วยypchshฉันได้รับ:

    ypchsh: yppasswdd not running on NIS master host ("dcsun2").

ฉันมีเพียงแค่.chsrcในไดเรกทอรีบ้านของฉันและฉันไม่สามารถหาใด ๆไฟล์ใน.profile /etcฉันจะเปลี่ยนเปลือกเริ่มต้นของฉันเป็นbashอย่างไร


4
มันอาจมีประโยชน์ในการรู้ว่าคุณใช้ยูนิกซ์ประเภทใด
enzotib

คำตอบ:


43
  1. ตรวจสอบให้แน่ใจว่าคุณได้bashติดตั้ง

  2. เรียนรู้ที่ตั้งของbash:

    which bash

    หรือ

    whereis bash

    /bin/bashด้านล่างผมจะสมมติสถานที่คือ

    a) หากคุณมีสิทธิ์ระดับผู้ดูแลระบบให้เรียกใช้ในฐานะรูท:

    usermod -s /bin/bash YOUR_USERNAME

    (แทนที่YOUR_USERNAMEด้วยชื่อผู้ใช้ของคุณ)

    b) ถ้าคุณไม่ได้ชื่นชม สิทธิ์คุณยังสามารถเรียกใช้bash --loginเมื่อเข้าสู่ระบบโดยใส่บรรทัดด้านล่างที่ส่วนท้ายของคุณ.cshrcหรือ.profile(ในโฮมไดเร็กตอรี่ของคุณ):

    setenv SHELL /bin/bash
    exec /bin/bash --login
    

2b ตรวจสอบว่าbashมีการระบุ/etc/shellsด้วยเส้นทางที่ถูกต้อง
จัดการ

@ การทำงานที่จะเกี่ยวข้องกับ2aไม่ใช่ 2b และมีประโยชน์เฉพาะในการตั้งค่าระบบที่แปลก / แตกเพื่อระบุสาเหตุที่วิธีการแก้ปัญหาไม่ทำงาน
rozcietrzewiacz

1
1. SHELL = / bin / bash ให้ข้อผิดพลาดไม่พบคำสั่ง 2. วิธีการแก้ปัญหาของคุณให้ฉันเปลือกทุบตีเป็นพรอมต์ แต่มันไม่เปลี่ยนเชลล์ล็อกอินของฉัน ขอบคุณสำหรับความช่วยเหลือ
Sumod

1
นี่คือสิ่งที่ฉันทำเพื่อแก้ไขปัญหานี้ 1. exec / bin / bash --login ในไฟล์. cshrc 2. ตั้ง SHELL = / bin / bash แล้วส่งออก SHELL ในไฟล์ / etc / profile ขอบคุณ
Sumod

2
โอ้ขอโทษ - export SHELL=/bin/bashฉันหมายถึงบรรทัดแรกจะเป็น อันที่จริงมีวิธีที่ดีกว่านั้น - ดูการอัปเดต
rozcietrzewiacz

13

ติดต่อผู้ดูแลระบบของคุณ เขาวางสิ่งผิดปกติ หากคุณเป็นผู้ดูแลระบบของคุณคุณได้ตั้งสิ่งผิดปกติ

ข้อความแสดงข้อผิดพลาดจะดูตรงไปตรงมา คุณไม่ได้yppasswdทำงานบน dcsun2 มันควรจะเป็น.

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


หากคุณติดอยู่กับ csh เป็นเชลล์ล็อกอินของคุณคุณยังสามารถเรียกใช้ทุบตีเมื่อคุณเข้าสู่ระบบใส่คำสั่งต่อไปนี้ในของคุณ~/.login(ดูการเปลี่ยนเปลือกเริ่มต้นโดยไม่ต้อง chsh หรือสิทธิ์ผู้ดูแลระบบ ):

sleep 2
if (-x /usr/local/bin/bash) then
  exec /usr/local/bin/bash -l
endif

แทนที่/usr/local/bin/bashด้วยเส้นทางที่เหมาะสมหากจำเป็น หากทุกอย่างใช้งานได้ให้ลบออกsleep 2(ซึ่งทำให้เกิดความล่าช้าในระหว่างที่คุณสามารถกดCtrl+Cเพื่อเลื่อนไปที่พรอมต์ csh ในกรณีที่มีบางอย่างผิดปกติ)

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