シェルをzshからbashに変更する


16

私のWebサーバーは、zshシェルを使用している誰かによって改ざんされました。bashシェルはUbuntuとOS X(私が使用する2つの主要なオペレーティングシステム)に付属しているデフォルトであるため、bashシェルを使用する方が快適です。しかし、この質問はUbuntuサーバーに焦点を当てています。このWebサーバーで実行している4つのWebサイトがあり、byobuを使用し、tmuxを使用し、rails、node.js、apache、いくつかのデーモンを使用します。現在のルートシェルをzshからbashに切り替えた場合、この切り替えによって悪影響が生じる可能性はありますか?たとえば、親プロセス(シェル)が切り替えられたため、プロセスは強制終了されますか?


あなたは変更の結果について尋ねていますか(どれもありません、私は今zshを使用していますし、好きなときにbashに切り替えることができます)、またはシェルを効果的に変更する方法について尋ねていますか?
Braiam

@ブライアム私は変化の結果について緊張しています。結果がない場合は、変更します。シェルは、Apacheのようなこれらのデーモンの親プロセスであり、切り替えた場合、Apacheプロセスを強制終了すると考えていました。しかし、私は間違っていると思います。
JohnMerlino

回答:


10

経由でシェルsudo chsh --shell=/bin/bash $USERを変更すると、のシェルフィールドが変更され/etc/passwdます。この値は、使用するシェルがシステムにわからない場合に、ログイン時にのみ参照されます。

によって開始されたかzsh、影響を受けないbash apacheevil_overlord's_programを問わず、実行中のプロセス


シェルは、その中で実行されている他のプロセスの親プロセスではありませんか、それとも制御端末(シェルではなく)が親プロセスと見なされますか?
JohnMerlino

loginプログラムはすべてのもののように、プロセスで実行されます。許可されると、UIDなどで別のプロセスを作成し、(/ etc / passwdから)/ bin / bashを実行します。bashシェルはSTDIN(でセットアップlogin)から読み取り、非組み込みコマンドをfork / execし、それらが終了するのを待ち、さらにコマンドをループします。「端末を制御する」という考え方は、Unix / Linuxでは役に立ちません。
ワルチネーター14年

25

スタックオーバーフローからの回答(zshからbashへの切り替え):

execを使用して、現在のシェルを新しいシェルに置き換えることができます。

bashに切り替えます。

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

0

Mac OS Catalinaの場合

  1. zshに変更します。

    chsh -s /bin/zsh
  2. bashに変更します。

    chsh -s /bin/bash
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.