如何使用chsh在linux上更改默认shell

Bash不是唯一的Linux shell。很容易尝试其他的shell,比如非常流行的Zsh。找到一个您喜欢的shell后,使用chsh命令将其设置为默认shell。我们会教你怎么做。...

Bash不是唯一的Linux shell。很容易尝试其他的shell,比如非常流行的Zsh。找到一个您喜欢的shell后,使用chsh命令将其设置为默认shell。我们会教你怎么做。

为什么贝壳很重要

shell位于您和操作系统之间。它在终端窗口内提供环境,允许您键入命令和运行程序。shell检查您的输入并找出您想要的内容。如果它能执行你的出价本身,它这样做。如果它需要外部帮助,它会搜索路径并找到可以执行您所请求的任何操作的程序。

Linux上有许多不同的shell。它们都允许您执行相同的核心任务:浏览文件系统、处理文件、启动程序和运行脚本。然而,他们每个人都以自己的方式执行这些任务,并有自己的特点和特质。

贝壳往往是由那些希望事物以特定方式运行的人设计的。如果你的想法和设计师的一致,那么这个外壳很可能很适合你。另外,在Linux上尝试一个新的shell也很容易。

在包括Ubuntu在内的大多数Linux发行版中,默认shell是bash。它做得很好,很能干。然而,另一个shell可能会提供一个节省时间的差异,这将对您的工作流产生很大的影响。如果你不看,你永远不会知道!

相关:什么是ZSH,为什么要用它来代替Bash?

一桶贝壳

我们之前已经介绍了不同的Linux shell,但下面简要介绍一下最常见的:

  • bash:Bourne shell在许多发行版中都是默认的。
  • rbash:这个受限的bashshell为其中运行的人员或脚本提供了最少的功能。
  • ash:Almquist shell是bash的较轻版本。
  • 破折号:Debian Alquist Shell是Ubuntu中的默认Shell脚本。bash是默认的登录和交互式shell,dash用于运行系统进程,因为它比bash轻得多。
  • zsh:Z shell是bash shell家族的一个现代版本。它提供了整洁的改进,比如命令拼写检查和建议的更正。
  • fish:这个友好的交互式shell是从头开始编写的,并不是从任何其他shell家族派生的。它的目的是用户友好。在它的许多其他特权中,fish根据您的历史记录和当前文件夹的内容为命令提供建议,类似于预测文本。
  • ksh:KornShell提供了一种特别强大的脚本语言。

相关:Bash、Zsh和其他Linux shell之间有什么区别?

列出已安装的外壳

要查看计算机上安装了哪些shell,请使用以下命令。它只列出/etc/shell文件的内容:

cat /etc/shells

如何使用chsh在linux上更改默认shell

我们提到了bash、dash和rbash,但是sh是什么?

sh是汤普森壳,写于1971年,由贝尔实验室的Ken Thompson成名。它不再被维护,而且早已被现代贝壳所取代。包含它纯粹是为了保持与旧脚本的兼容性,旧脚本的第一行仍然是以下内容:

#!/bin/sh

这指示系统使用sh shell执行脚本。你的机器上真的有那个古老的外壳吗?它是用来运行你的脚本的吗?which命令将告诉我们在键入命令时实际运行的程序。

让我们看看键入sh时运行什么:

which sh

这似乎找到了一个二进制文件。不过,如果我们再深入一点,就会发现它是一个符号链接,实际上指向dash,一个用于执行脚本的轻量级shell:

ls -l /bin/sh

如何使用chsh在linux上更改默认shell

这是一种简洁、轻量级的方法,可以为希望在现代系统上找到sh的脚本提供一个安全网。

安装另一个外壳

让我们安装fish shell并将其设置为dave的默认值。在Ubuntu上,我们键入以下命令:

sudo apt-get install fish

如何使用chsh在linux上更改默认shell

在Manjaro上,使用pacman:

sudo pacman -Sy fish

如何使用chsh在linux上更改默认shell

在Fedora上,键入以下内容:

sudo dnf install fish

如何使用chsh在linux上更改默认shell

安装完成后,可以再次检查已安装的shell:

cat /etc/shells

如何使用chsh在linux上更改默认shell

我们的新外壳显示为/usr/bin/fish。记下你很快就会用到的那条路。

$shell环境变量

$SHELL环境变量保存当前SHELL的名称。我们可以用echo检查它设置为哪一个:

echo $SHELL

让我们从鱼壳开始:

fish

现在,让我们再次检查$SHELL环境变量的含义:

echo $SHELL

如何使用chsh在linux上更改默认shell

第一次使用echo$SHELL时,我们使用的是bash SHELL。环境变量保存bash可执行文件/bin/bash的路径。

当我们启动FishShell时,会收到一条友好的欢迎消息,并且命令提示符会发生变化。可能令人惊讶的是,$SHELL环境仍然持有bash可执行文件/bin/bash的路径。没关系,这很正常。

启动新shell(或任何其他程序)时,它将继承父shell的环境。因此,fish shell从bash shell继承全局和导出的环境变量。因为$SHELL环境变量中的值没有更改,所以它在fish SHELL中的值与在bash SHELL中的值相同。

我们像其他程序一样在运行鱼。我们也可以使用exit退出鱼壳。它像其他程序一样关闭,我们返回bash shell。

这是伟大的尝试新的贝壳,看看他们能做什么,你是否与他们相处。你可以在跳伞前进行探索,然后选择一个作为你的跳伞。

如果决定将fish或任何其他shell设为默认值,则需要使用chsh命令。

chsh命令

chsh命令允许您更改默认shell。诀窍在于它允许您更改默认登录和默认交互shell。你可能想改变一个或另一个,或两者兼而有之。

每当您登录以获得命令提示符时,都会使用配置为登录shell的shell。当您已经登录并打开终端窗口时,您将使用配置为交互式shell的shell。这些壳可以是相同的,也可以是不同的。

要设置登录shell,请使用不带参数的chsh:

chsh

如何使用chsh在linux上更改默认shell

系统会提示您输入密码。然后,必须键入新shell的路径并按Enter键。

如果我们从另一台远程连接到这台测试计算机,一旦登录,我们就会发现自己身陷囹圄。

如何使用chsh在linux上更改默认shell

要更改交互式shell,请使用chsh和-s(shell)选项。在命令行上传递新shell的路径:

chsh -s /usr/bin/fish

如何使用chsh在linux上更改默认shell

系统将提示您输入密码并返回到当前shell的命令提示符。您需要注销并重新登录才能使更改生效。当您这样做时,您将看到问候语和fish shell命令提示符。

$SHELL环境变量现在保存新默认SHELL的路径:

echo $SHELL

如何使用chsh在linux上更改默认shell

更改其他用户帐户的shell

如果您具有root权限并且可以使用sudo,则可以更改其他用户帐户的shell。命令与之前相同,在命令行中添加了此人的用户名:

sudo chsh -s /usr/bin/fish mary

如何使用chsh在linux上更改默认shell

当mary下次登录时,当她打开一个终端窗口时,就会看到新的shell。

如何使用chsh在linux上更改默认shell

每个人都有自己的最爱

只要你对你选择的外壳感到舒适,它对你来说太好了!请记住,它必须能够运行常见的脚本,例如安装例程。对于这里提到的贝壳,这应该不是问题。

当然,您也可以下载并安装一个新的shell,并将其作为一个试驾,而无需对您的计算机进行任何配置更改。当你准备结婚时,chsh将为你主持婚礼。

  • 发表于 2021-04-02 06:04
  • 阅读 ( 336 )
  • 分类:互联网

你可能感兴趣的文章

如何定制mac终端并使其更有用

...个新手,现在坚持默认的bashshell是可以的。但你应该知道如何在需要的时候切换它们。 ...

  • 发布于 2021-03-21 20:13
  • 阅读 ( 272 )

如何在ubuntu中安装和更改主题

... 如何在ubuntu中安装主题 ...

  • 发布于 2021-03-24 21:26
  • 阅读 ( 371 )

如何使用pydroid3在android上安装和编写python代码

... 无论您是Python编程新手还是专家,让我们来看看您如何在Android设备上充分发挥pydroid3的潜力。 ...

  • 发布于 2021-03-30 03:41
  • 阅读 ( 402 )

哪个linux shell最好?比较了5种常见的贝壳

...你的计算机需要一个翻译层。这介于你告诉它做什么和它如何理解之间。 ...

  • 发布于 2021-03-30 18:45
  • 阅读 ( 370 )

如何使用受限shell来限制linux用户可以做什么

...改其目录,您可以控制他们可以访问哪些命令。下面介绍如何在Linux上设置受限shell。 受限炮弹 受限shell不是另一个shell。这是标准外壳的另一种模式。Bash、Korn、Fish和其他shell都可以在受限shell模式下启动。在本文中,我们将...

  • 发布于 2021-03-31 10:57
  • 阅读 ( 385 )

如何使用shopt定制bashshell

...shshell的行为,您可以控制超过50个设置。我们将向您展示如何按照您喜欢的方式定制您的Linux系统。 shopt内置 shopt内置是bashshell所有版本的一部分,因此不需要安装任何东西。多年来,shopt提供的选项数量稳步增加。所以,Bash...

  • 发布于 2021-04-01 12:30
  • 阅读 ( 173 )

如何在linux上以彩色显示手册页

...出显示的文本。 向下滚动,您将看到页面的不同元素是如何着色的。 多用与少用非常相似,但也有一些不同。在most中按H可查看键绑定及其函数的列表。 用更少的颜色 如果你不想安装另一个寻呼机或必须学习新的按键,有一...

  • 发布于 2021-04-01 20:53
  • 阅读 ( 157 )

新的windows终端已经准备好了,这就是为什么它如此惊人

...uild2020上,微软宣布新的Windows终端稳定并且“可以供企业使用”。它最初是在Build2019发布的,微软甚至准备了一段炫目的视频来宣传它有多棒。 新的Windows终端具有许多有用的功能。除了功能之外,控制台环境的核心已经现代化...

  • 发布于 2021-04-02 04:44
  • 阅读 ( 215 )

如何在linux上的bash中设置环境变量

Linux上有多种类型的环境变量。了解如何查看它们,为本地和远程登录创建它们,并使它们在重新启动后仍然有效。 环境变量的工作原理 启动终端窗口及其内部的shell时,会引用一组变量,以确保shell配置正确。这些变量还确...

  • 发布于 2021-04-02 06:44
  • 阅读 ( 219 )

如何在linux中向$path添加目录

...但这并没有什么不好的地方。我们将解释它的作用,以及如何调整它。 什么是$path,它是如何工作的($path on linux, and how does it work)? 当您在终端窗口中键入一个命令并按Enter键时,您甚至在执行命令之前就开始了大量的活动。 B...

  • 发布于 2021-04-02 14:04
  • 阅读 ( 186 )
fedgulf
fedgulf

0 篇文章

相关推荐