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 或任何其他系统文件)
使用env:
su - myUser -c "env myVar=\"$toto\" scriptThatNeedsMyVar.sh"
Run Code Online (Sandbox Code Playgroud)
当然,假设它scriptThatNeedsMyVar.sh是可执行的,并且可以在myUser's中找到PATH,并且以 开头#!/bin/sh。