You need to enable JavaScript to run this app. 如何在Bash脚本中检查当前用户并切换为指定用户执行后续逻辑
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash脚本中检查当前用户并切换为指定用户执行后续逻辑

Bash 脚本强制以指定用户运行剩余代码实现方案

直接在你的脚本开头加入以下校验切换逻辑即可:

#!/bin/bash

# 配置目标运行用户
TARGET_USER="user1"

# 获取当前运行用户
RUN_USER=$(whoami)

# 判断是否需要切换用户
if [ "$RUN_USER" != "$TARGET_USER" ]; then
    # 以目标用户身份重新执行当前脚本,透传所有原始参数
    # exec 会直接替换当前进程,切换成功后不会继续执行原进程的后续代码
    exec su - "$TARGET_USER" -c "$0 $*"
    # 执行到此处说明切换失败,抛出错误
    echo "切换至用户 $TARGET_USER 失败,请检查权限配置" >&2
    exit 1
fi

# --------------------------
# 下方为你原有脚本的业务逻辑,会自动以 user1 身份运行
# --------------------------
echo "当前执行用户:$(whoami)"
echo "收到的脚本参数:$@"

注意事项

  • 如果你当前以 root 身份运行脚本,su 切换普通用户无需输入密码,完全适配你的场景
  • 若不需要切换到目标用户的 home 目录、不需要加载目标用户的环境变量,可将su -修改为su
  • 若你的环境配置了 sudo 权限,推荐使用更稳妥的参数传递写法,避免带空格/特殊字符的参数解析异常:
    exec sudo -u "$TARGET_USER" "$0" "$@"
    
  • 需确保脚本对 user1 开放读和执行权限,避免切换后出现权限不足无法执行的问题

内容的提问来源于stack exchange,提问作者Kalyanam Rajashree

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 12:06:04