쉘을 zsh에서 bash로 변경


17

zsh 셸을 사용하는 사람이 웹 서버를 조작했습니다. bash 쉘을 사용하는 것이 더 편안합니다 .Ubuntu 및 OS X (내가 사용하는 두 가지 주요 운영 체제)와 함께 제공되는 기본값입니다. 그러나이 질문은 우분투 서버에 중점을 둡니다. 나는이 웹 서버에서 4 개의 웹 사이트를 실행하고 있으며, byobu를 사용하고, tmux를 사용하고, 레일에서 ruby ​​/ ruby, node.js, apache, 몇 가지 데몬을 사용합니다. 현재 루트 셸을 zsh에서 bash로 전환하면이 스위치로 인한 부작용이있을 수 있습니까? 예를 들어, 부모 프로세스 (쉘)가 전환되어 프로세스가 종료됩니까?


변경의 결과에 대해 묻고 있습니까 (아무 것도 zsh를 사용하고 있으며 언제든지 원할 때 bash로 전환 할 수 있습니까) 쉘을 효과적으로 변경하는 방법에 대해 묻고 있습니까?
Braiam

@Braiam 나는 변화의 결과에 대해 불안합니다. 결과가 없으면 변경하겠습니다. 나는 쉘이 아파치와 같은 이러한 데몬의 부모 프로세스라고 생각하고 있었고, 그것을 전환해야한다면 아파치 프로세스를 죽일 것이라고 생각했다. 그러나 나는 틀렸다고 생각한다.
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 쉘은 STDIN에서 읽고 (로 설정 login) 내장되지 않은 명령을 포크 / 실행하고 종료 될 때까지 기다린 후 추가 명령을 반복합니다. "터미널 제어"라는 개념은 유닉스 / 리눅스에서는 유용하지 않습니다.
waltinator 2016 년

25

스택 오버플로에서 응답 ( zsh에서 bash로 전환 ) :

exec를 사용하여 현재 쉘을 새 쉘로 바꿀 수 있습니다.

bash로 전환하십시오.

exec bash

zsh로 전환하십시오.

exec zsh

이것은 새로운 터미널 창이나 다른 것에 영향을 미치지 않지만 편리합니다.


작동하지 않았다. still : 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.