đổi vỏ từ zsh sang bash


16

Máy chủ web của tôi đã bị giả mạo bởi một người đang sử dụng zsh shell. Tôi cảm thấy thoải mái hơn khi sử dụng bash shell, vì đó là các mặc định đi kèm với Ubuntu và OS X (hai hệ điều hành chính tôi sử dụng). Nhưng câu hỏi này tập trung vào máy chủ Ubuntu. Tôi có 4 trang web đang chạy trên máy chủ web này, tôi sử dụng byobu, tôi sử dụng tmux, tôi sử dụng ruby ​​/ ruby ​​trên đường ray, node.js, apache, một vài trình nền. Nếu tôi chuyển đổi vỏ gốc hiện tại từ zsh sang bash, có thể có bất kỳ tác dụng phụ tiêu cực nào có thể xảy ra từ việc chuyển đổi này không? Ví dụ, các quy trình sẽ bị giết vì quy trình cha của chúng (trình bao) đã được chuyển đổi?


Bạn đang hỏi về hậu quả của thay đổi (không có gì, tôi đang sử dụng zsh ngay bây giờ và có thể chuyển sang bash bất cứ khi nào tôi muốn) hoặc bạn đang hỏi về cách thay đổi vỏ hiệu quả?
Braiam

@Braiam Tôi lo lắng về hậu quả của sự thay đổi. Nếu không có hậu quả thì tôi sẽ thay đổi. Tôi chỉ nghĩ rằng cái vỏ là một quá trình cha mẹ đối với một số daemon như apache, và nếu tôi chuyển ra khỏi nó, nó sẽ giết chết quá trình apache. Nhưng tôi đoán tôi đã sai.
JohnMerlino

Câu trả lời:


10

Thay đổi vỏ của bạn, thông qua sudo chsh --shell=/bin/bash $USERsẽ thay đổi trường vỏ trong /etc/passwd. Giá trị này chỉ được tham khảo tại thời điểm đăng nhập, khi hệ thống không có ý tưởng sử dụng shell nào cho bạn.

Chạy các quy trình, cho dù bắt đầu bằng zsh, bash apachehoặc evil_overlord's_programsẽ không bị ảnh hưởng


Không phải shell là tiến trình cha của các tiến trình khác đang chạy trong nó, hay chỉ là thiết bị đầu cuối điều khiển (chứ không phải shell) sẽ được coi là tiến trình cha?
JohnMerlino

Các loginchương trình chạy trong một quá trình, giống như tất cả mọi thứ. Khi nó cho phép bạn vào, nó sẽ tạo một quy trình khác với UID của bạn, v.v. và chạy / bin / bash (từ / etc / passwd). Shell bash đọc từ STDIN (được thiết lập bởi login) và sẽ fork / thực thi các lệnh không dựng sẵn, chờ cho chúng kết thúc và lặp lại cho nhiều lệnh hơn. Ý tưởng về "thiết bị đầu cuối kiểm soát" không hữu ích trong Unix / Linux.
ví von

25

Trả lời từ Stack Overflow ( chuyển từ zsh sang bash ):

Bạn chỉ có thể sử dụng exec để thay thế shell hiện tại của mình bằng shell mới:

Chuyển sang bash:

exec bash

Chuyển sang zsh:

exec zsh

Điều này sẽ không ảnh hưởng đến các cửa sổ đầu cuối mới hoặc bất cứ điều gì, nhưng nó thuận tiện.


đã không làm việc. vẫn: echo $ SHELL / usr / bin / zsh
Ses

8

Mở terminal của bạn và sử dụng lệnh sau:

chsh -s $(which bash)

Tôi cho rằng đây là tương đương với chsh -s / bin / bash
JohnMerlino

2
which bashsẽ đưa ra đường dẫn tuyệt đối bash, vì vậy nó sẽ giống nhau nếu /bin/bashbashvị trí.
ryanjdillon

0

Trên Mac OS Catalina

  1. Thay đổi thành zsh:

    chsh -s /bin/zsh
  2. Thay đổi thành bash:

    chsh -s /bin/bash
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.