0%

查看可支持的shell

Linux 中 Shell 的类型与查看方法

在 Linux 系统中,Shell 作为用户与内核交互的接口,提供了多种实现(如 bash、sh、zsh 等)。了解系统支持的 Shell 类型及默认 Shell,对脚本编写和环境配置至关重要。

Shell 解释器的指定:#! 声明

Shell 脚本第一行的 #!/bin/bash 称为释伴(shebang),其作用是告诉系统:使用 /bin/bash 这个解释器来执行脚本。

  • 原理#! 是一个特殊标记,其后跟随的路径指向具体的 Shell 解释器(或其他脚本解释器,如 /usr/bin/python)。

  • 示例:

    1
    2
    3
    #!/bin/sh      # 使用 sh 解释器
    #!/usr/bin/zsh # 使用 zsh 解释器
    #!/usr/bin/env bash # 更灵活的写法,从环境变量中查找 bash
  • 注意:若脚本未指定 #!,系统会默认使用当前用户的默认 Shell 执行。

查看系统支持的 Shell 类型

Linux 系统中,所有支持的 Shell 类型都记录在 /etc/shells 文件中,通过以下命令可查看:

1
cat /etc/shells

输出示例

1
2
3
4
5
6
7
8
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/zsh
/usr/bin/zsh
/bin/csh
/usr/bin/csh
  • 常见 Shell 说明:
    • sh:Bourne Shell,早期 Unix 系统的默认 Shell,功能较简单。
    • bash:Bourne Again Shell,兼容 sh,增加了更多功能(如命令补全、历史记录),是大多数 Linux 发行版的默认 Shell。
    • zsh:Z Shell,功能强大,支持更多扩展(如主题、插件),适合交互式使用。
    • csh/tcsh:C Shell,语法类似 C 语言,较少用于脚本。

查看当前用户的默认 Shell

每个用户都有一个默认 Shell(创建用户时指定,可修改),通过环境变量 $SHELL 可查看:

1
echo $SHELL

输出示例

1
/bin/bash
  • 修改默认 Shell:使用chsh命令(需注销后生效):

    1
    2
    # 将默认 Shell 改为 zsh
    chsh -s /bin/zsh

为什么需要指定 Shell?

  1. 兼容性:不同 Shell 的语法可能存在差异(如数组处理、字符串操作),指定 Shell 可避免脚本在不同环境下执行出错。
    • 例如:zsh 支持数组下标从 1 开始,而 bash 数组下标从 0 开始,若脚本依赖特定语法,必须指定对应的 Shell。
  2. 功能控制:某些功能仅在特定 Shell 中存在(如 bash[[ ]] 条件判断、zsh 的通配符扩展),指定 Shell 可确保功能正常。
  3. 脚本标准化:明确指定 Shell 是良好的编程习惯,便于他人理解脚本的执行环境

欢迎关注我的其它发布渠道

表情 | 预览
快来做第一个评论的人吧~
Powered By Valine
v1.3.10