使用 sudo 和自訂環境變數呼叫應用程式

使用 sudo 和自訂環境變數呼叫應用程式

我需要sqlplus使用 oracle 使用者 sudo呼叫ORACLE_SID一行命令來明確指定的資料庫(env var)。通常的方法包括 2 個步驟:

$ sudo -u oracle -i
$ ORACLE_SID=DBNAME sqlplus / as sysdba

但我需要一行完成(合理地節省時間)。我嘗試簡單地這樣做:

$ sudo -u oracle -i ORACLE_SID=DBNAME sqlplus / as sysdba

但似乎sqlplus沒有看到ORACLE_SID環境變數的變化並連接到預設資料庫。另外,我不能排除-isudo 選項,因為我需要確保所有其他環境變數都已完美初始化。

在我的情況下,如何使用 sudo 和自訂環境變數來運行應用程式?

答案1

嘗試以下命令:

sudo -i su - oracle -c 'ORACLE_SID=DBNAME && sqlplus'

解釋:

"sudo -i" will take care of the environment variables.
"su - user" will consider the user's environment variables
"-c" -> the command you wish to issue.

答案2

解決問題的最佳方法是使用以下命令:

sudo -u oracle -i sh -c "ORACLE_SID=DBNAME sqlplus / as sysdba"

如果我們想直接在一行中傳遞sql腳本:

sudo -u oracle -i sh -c "ORACLE_SID=DBNAME sqlplus / as sysdba" <<-EOF
  SELECT 1 FROM DUAL;
EOF

相關內容