在 su - 用户中找不到导出命令

在 su - 用户中找不到导出命令

从 root 开始,我想用另一个$USER.但我必须设置正确的$ORACLE_HOME$PATH$USER

使用此命令我收到错误export: command not found

su - $USER -c "export ORACLE_HOME=$ORA_HOME;export PATH=$ORA_HOME/bin:$PATH;sqlplus / as sysdba"

我的问题是:开始在根目录中执行脚本,如何为另一个用户导出环境变量并使用该环境变量执行命令?

答案1

正如 Steeldriver 评论的那样,您的目标用户可能正在使用 csh 或 tcsh。如果您想确定您正在使用的 shell,请显式调用它:

su - "$USER" -c \
  "/bin/ksh -c 'export ORACLE_HOME=$ORA_HOME;export PATH=$ORA_HOME/bin:$PATH;sqlplus / as sysdba'"

虽然(子)shell 将包含主 shell 中的任何(导出的)环境变量,但它不会包含用户主 shell 中的任何(未导出的)shell 变量。

答案2

无论如何,您不需要导出。赶紧跑:

su - $USER -c "ORACLE_HOME=$ORA_HOME;PATH=$ORA_HOME/bin:$PATH;sqlplus / as sysdba"

export当您需要由 shell 启动的任何子 shell 继承变量时才需要。在这里,您从同一个 shell 启动命令,因此无需export.

sqlplus但是,正如评论中指出的那样,如果需要查看这些变量,只有需要设置它们才能正确找到 sqlplus 时,这将无济于事。如果失败,请尝试:

su - $USER -c "ORACLE_HOME='$ORA_HOME' PATH='$ORA_HOME/bin:$PATH' sqlplus / as sysdba"

相关内容