加油
努力

连接阿里云服务器后如何判断使用的是bash还是sh?

连接阿里云服务器后,判断当前 Shell 是 bash 还是 sh(或 dash、zsh 等),可以通过以下几种简单方法:

方法一:查看 $SHELL 环境变量(最常用)

echo $SHELL
  • 若输出 /bin/bash → 使用的是 bash
  • 若输出 /bin/sh → 可能是 sh(在 Debian/Ubuntu 系常指向 dash)
  • 若输出 /bin/zsh → 使用的是 zsh

⚠️ 注意:$SHELL 表示的是你登录时使用的默认 shell,但当前会话可能已被其他命令临时切换。


方法二:查看当前实际运行的 shell

ps -p $$

或更简洁地:

echo $0
  • 若输出 -bash 或 bash → 当前是 bash
  • 若输出 sh 或 -sh → 当前是 sh
  • 若输出 dash → 当前是 dash(Debian/Ubuntu 的 /bin/sh 通常指向它)

✅ 推荐组合:同时运行以下两行确认:

echo "Login shell: $SHELL"
echo "Current shell: $(basename $0)"

方法三:检查 /etc/passwd 中你的用户配置

grep "^$(whoami):" /etc/passwd

最后一列是你的登录 shell 路径,例如:

  • /home/user:/bin/bash → 默认 bash
  • /home/user:/bin/sh → 默认 sh

补充说明

  • 在大多数 Linux 发行版中,/bin/sh 是一个符号链接:
    • CentOS/RHEL/Fedora:通常指向 bash(兼容模式)
    • Ubuntu/Debian:通常指向 dash(更快、更精简)
  • 即使 $SHELL 是 bash,某些脚本仍可能显式调用 sh script.sh,此时执行环境是 sh。

✅ 快速验证示例:

# 1. 看登录 shell
echo $SHELL

# 2. 看当前进程
ps -o comm= -p $$

# 3. 看当前 shell 名称
echo $0

根据输出即可准确判断。

云服务器