将shell从zsh更改为bash


17

我的Web服务器被使用zsh shell的人篡改。我使用bash shell感到更自在,因为这是Ubuntu和OS X(我使用的两个主要操作系统)随附的默认设置。但是这个问题集中在Ubuntu服务器上。我有4个网站正在此Web服务器上运行,我使用byobu,我使用tmux,我在rails,node.js,apache和一些守护程序上使用ruby / ruby​​。如果我将当前的根shell从zsh切换到bash,此切换是否会带来任何负面影响?例如,由于进程的父进程(shell)已被切换,进程会被杀死吗?


您是在询问更改的后果(没有,我现在正在使用zsh并可以随时更改为bash),还是在询问如何有效地更改shell?
Braiam

@布赖恩我很担心变化的后果。如果没有后果,那我会改变。我只是认为shell是某些守护进程(如apache)的父进程,如果我退出该进程,它将杀死apache进程。但是我想我错了。
JohnMerlino 2013年

Answers:


10

更改外壳,通过sudo chsh --shell=/bin/bash $USER将更改中的外壳字段/etc/passwd。仅当系统不知道要使用哪个shell时,才在登录时查询该值。

运行过程中,无论是启动zshbash apacheevil_overlord's_program将不会受到影响


外壳程序不是在其中运行的其他进程的父进程,还是仅仅是控制终端(而不是外壳程序)被视为父进程?
JohnMerlino 2014年

login程序像所有程序一样在一个进程中运行。当它允许您进入时,它将使用您的UID等创建另一个进程,并运行/ bin / bash(来自/ etc / passwd)。bash shell从STDIN读取(由设置login),并将派生/执行非内置命令,等待它们终止,并循环查找更多命令。“控制终端”的思想在Unix / Linux中没有用。
waltinator 2014年

25

堆栈溢出的答案(从zsh切换到bash):

您可以使用exec用新的shell替换当前的shell:

切换到bash:

exec bash

切换到zsh:

exec zsh

这不会影响新的终端窗口或其他任何东西,但是很方便。


不工作。仍然:echo $ SHELL / usr / bin / zsh
ses

8

打开您的终端并使用以下命令:

chsh -s $(which bash)

我认为这相当于chsh -s / bin / bash
JohnMerlino 2014年

2
which bash会给的绝对路径bash,因此,如果是相同的/bin/bash就是bash位于。
ryanjdillon

0

在Mac OS的Catalina上

  1. 更改为zsh:

    chsh -s /bin/zsh
  2. 更改为bash:

    chsh -s /bin/bash
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.