Cách thay đổi từ csh sang bash như shell mặc định


34

Tôi có cshvỏ mặc định của tôi, như được hiển thị bởi echo $SHELL. Tôi muốn chuyển sang bashlàm vỏ mặc định của tôi. Tôi đã thử các cách tiếp cận sau đây nhưng không có kết quả:

  1. Với chshtôi nhận được:

    chsh: can only change local entries; use ypchsh instead.
  2. Với ypchshtôi nhận được:

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

Tôi chỉ có .chsrctrong thư mục nhà của tôi và tôi không thể tìm thấy bất kỳ .profiletập tin trong /etc. Làm cách nào để thay đổi shell mặc định của tôi thành bash?


4
Nó có thể hữu ích để biết bạn thuộc loại unix nào.
enzotib

Câu trả lời:


43
  1. Hãy chắc chắn rằng bạn đã bashcài đặt.

  2. Tìm hiểu vị trí của bash:

    which bash

    hoặc là

    whereis bash

    Dưới đây, tôi sẽ giả định vị trí là /bin/bash.

    a) Nếu bạn có quyền quản trị, chỉ cần chạy bằng root:

    usermod -s /bin/bash YOUR_USERNAME

    (thay thế YOUR_USERNAMEbằng tên người dùng của bạn).

    b) Nếu bạn không có adm. quyền, bạn vẫn có thể chỉ cần chạy bash --loginlúc đăng nhập, bằng cách đặt dưới dòng ở cuối của bạn .cshrchoặc .profile(trong thư mục chính của bạn):

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

2b. Kiểm tra nếu bashđược liệt kê /etc/shellsvới đường dẫn chính xác.
manatwork

@manatwork Điều đó có liên quan đến 2a , không phải 2b. Và chỉ hữu ích trong một thiết lập hệ thống lạ / hỏng để xác định lý do tại sao giải pháp không hoạt động.
rozcietrzewiacz

1
1. SHELL = / bin / bash đưa ra lệnh không tìm thấy lỗi. 2. Giải pháp của bạn cho tôi một bash shell như lời nhắc. Nhưng nó không thay đổi vỏ đăng nhập của tôi. Cảm ơn sự giúp đỡ của bạn.
Sumod

1
Đây là những gì tôi đã làm để giải quyết điều này. 1. exec / bin / bash --login trong tệp .cshrc 2. đặt SHELL = / bin / bash và sau đó xuất SHELL trong tệp / etc / profile. Cảm ơn.
Sumod

2
Ah, xin lỗi - Tôi có nghĩa là dòng đầu tiên là export SHELL=/bin/bash. Trên thực tế có một cách tốt hơn thế - xem cập nhật.
rozcietrzewiacz

13

Liên hệ với quản trị viên hệ thống của bạn. Anh ta đặt ra những điều sai trái. Nếu bạn là quản trị viên hệ thống của bạn thì bạn đã thiết lập mọi thứ sai.

Thông báo lỗi trông khá thẳng về phía trước. Bạn không yppasswdchạy trên dcsun2. Nó nên

Nhưng thực hiện tìm kiếm nhanh trên google sẽ cho kết quả này cho thấy bạn sẽ gặp lỗi này nếu yppasswdđang chạy trên cả máy khách và máy chủ. Trong trường hợp này, tắt nó trên máy khách.


Nếu bạn bị mắc kẹt với csh làm vỏ đăng nhập, bạn vẫn có thể khiến nó gọi bash khi đăng nhập. Đặt các lệnh sau vào ~/.login(xem thêm Thay đổi vỏ mặc định mà không có chsh hoặc quản trị viên riêng )

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

Thay thế /usr/local/bin/bashbằng con đường thích hợp nếu cần thiết. Nếu mọi thứ hoạt động, hãy xóa sleep 2(điều này đặt độ trễ trong đó bạn có thể nhấn Ctrl+Cđể thả xuống dấu nhắc csh, trong trường hợp có lỗi xảy ra).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.