完整介绍及shell的含义(点这里)
1、常见默认shell
在Linux中,用户的默认shell是在/etc/passwd
文件中的第七个字段中指定的。不同的shell有不同的用途和行为。以下是几种常见的默认shell以及它们的作用:
/bin/bash
:
- 许多Linux系统将
/bin/sh
实际上链接到/bin/bash
,因此当系统使用默认shell时,它使用的是Bash。
/usr/sbin/nologin
:
nologin
shell实际上是一个用于禁止用户登录的占位符。当用户尝试登录时,系统将显示一个消息并禁止登录。通常用于系统账户或服务账户,以确保它们不能通过登录获取shell访问权限。
/bin/false
:
false
是一个返回失败状态的命令。当用户尝试登录时,它将立即退出,因此用户无法成功登录。与nologin
类似,通常用于系统账户或服务账户,以防止非必要的登录。
/bin/sh
:
- 这通常是一个符号链接,指向系统上安装的默认shell。在一些系统中可能是
bash
,在一些较小的系统中可能是dash
(Debian Almquist Shell)等。
/bin/zsh
:
- Zsh是一种强化的shell,提供了许多有用的功能,类似于bash。有些用户选择将其作为他们的默认shell。
/usr/bin/fish
:
- Fish是一种用户友好的shell,具有语法高亮、自动建议和其他交互式功能。
2、不同shell的区别
不同的shell在功能、语法和用途上可能存在一些差异,但一般而言,它们在权限方面没有本质的区别。在Linux和Unix系统中,shell通常只是用户与系统进行交互的一种方式,并不决定用户的权限。
主要的区别在于用户体验、交互性和脚本编程方面。以下是一些不同的shell以及它们的特点:
-
Bash (
/bin/bash
):- Bash是一种功能强大的shell,支持交互式使用和脚本编程。它是大多数Linux系统的默认shell。
- 具有丰富的命令历史、命令补全、条件测试、循环结构、函数、别名等功能。
-
Zsh (
/bin/zsh
):- Zsh是一种强化的shell,提供高级的交互功能,如语法高亮、自动建议等。用户友好,适用于交互式使用。
- 具有类似于Bash的功能,但还添加了一些额外的特性。
-
Fish (
/usr/bin/fish
):- Fish是一种用户友好的shell,具有简单且易于记忆的语法。适合新手用户。
- 提供自动建议、语法高亮、易读的语法等特性。
-
Dash (
/bin/dash
):- Dash是一种轻量级的POSIX兼容shell,通常用于系统启动脚本的解释器。
- 相对于Bash来说,它更轻量,适用于一些资源有限的环境。
在Linux系统中,用户的权限主要由用户和用户组的设置,以及文件和目录的权限控制(如
chmod
命令)决定。不同的shell并不直接影响用户的权限,而是提供了不同的用户体验和工具集。系统管理员可以在用户的/etc/passwd
条目中指定用户的默认shell。