连接阿里云服务器后,判断当前 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(更快、更精简)
- CentOS/RHEL/Fedora:通常指向
- 即使
$SHELL是bash,某些脚本仍可能显式调用sh script.sh,此时执行环境是sh。
✅ 快速验证示例:
# 1. 看登录 shell
echo $SHELL
# 2. 看当前进程
ps -o comm= -p $$
# 3. 看当前 shell 名称
echo $0
根据输出即可准确判断。
云小栈