如何以其他用户身份导出环境变量

sto*_*orm 4 command-line bash scripts environment-variables

我试图在运行脚本之前为用户会话设置环境变量:

su - myUser -c "export myVar=$toto ; sh scriptThatNeedsMyVar.sh"
Run Code Online (Sandbox Code Playgroud)

脚本失败,我尝试调试并打印 myVar 值:

su - myUser -c "export myVar=$toto ; echo $myVar"
Run Code Online (Sandbox Code Playgroud)

什么都不返回,这意味着我的 env 变量没有创建,尽管我在同一个 bash 中创建并打印它!然后,当我登录为myUser并在 bash 控制台中键入每个命令时,它运行良好

$su - myUser
$export myVar=toto
$echo $myVar
toto
Run Code Online (Sandbox Code Playgroud)

我是不是错过了什么?
为什么会发生这种情况以及如何以另一个用户身份导出临时变量(我不允许编辑 bashrc 或任何其他系统文件)

wal*_*tor 5

使用env

su - myUser -c "env myVar=\"$toto\" scriptThatNeedsMyVar.sh"
Run Code Online (Sandbox Code Playgroud)

当然,假设它scriptThatNeedsMyVar.sh是可执行的,并且可以在myUser's中找到PATH,并且以 开头#!/bin/sh