如何在Linux中更改Shell

时间:2020-03-05 15:26:05  来源:igfitidea点击:

本快速教程介绍了如何检查正在运行的shell程序,系统中可用的shell程序以及如何在Linux中更改默认shell程序。

我们可能已经知道,Linux和其他类似Unix的系统上有多个shell。
Bash是几乎所有Linux发行版中的默认shell,但是还有一些其他流行的shell,例如:

  • ksh
  • zsh
  • fish
  • csh
  • dash

如何知道默认的shell?

要了解Linux系统中为我们设置的默认shell程序,可以检查SHELL环境变量。
通常,默认shell是bash,如下所示:

echo $SHELL
/bin/bash

如何查看我们当前使用的shell?

没有任何一种方法可以100%准确地告诉我们所使用的shell。

我们可以尝试使用echo $0来显示如下输出:

echo 
ps -p $$
  PID TTY          TIME CMD
 9625 pts/0    00:00:00 zsh
zsh

或者使用ps -p $$检查进程,如下所示:

# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
/usr/bin/tmux
/usr/bin/fish
/bin/zsh
/usr/bin/zsh

如何查看Linux系统上可用的所有shell?

文件/etc/shells中列出了Linux系统上可用的所有shell。
我们可以使用cat命令或者更少的命令来查看文件的内容。

zsh

如何更改shell以使用另一个shell?

如果我们要使用其他shell,只需输入其名称即可登录新shell。
例如,如果我们安装zsh并想使用它,则可以简单地使用:

chsh -s /usr/bin/fish

我们可以输入exit退出新shell并返回上一个shell。

如何永久更改Linux中的默认Shell?

假设我们非常喜欢Fishshell,并且希望将其用作默认shell,以便每次打开终端或者ssh进入系统时,都在使用它而不是默认bashshell。

Linux允许我们使用chsh命令更改默认Shell。
更改自己登录用户的默认Shell的最佳方法是使用/s选项指定/etc/shells文件中列出的Shell名称。

##代码##

我们必须注销系统才能使更改生效,否则我们会认为运行chsh不会更改shell。

我们是否注意到我必须指定/etc/shells文件中列出的完整路径?
如果我使用了chsh -s fish,它将给我一个错误,例如“ chsh:fish是无效的shell”。