sudoとカスタム環境変数を使用してアプリを呼び出す

sudoとカスタム環境変数を使用してアプリを呼び出す

sqlplus1 行のコマンドで、Oracle ユーザー sudo を使用して、明確に指定された DB (env var) を呼び出す必要がありますORACLE_SID。通常の方法は、次の 2 つの手順で構成されます。

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

しかし、私はそれを 1 行で実行する必要があります (合理的に時間を節約するため)。私は次のように単純に実行しようとします。

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

sqlplusしかし、環境変数の変更は認識されず、デフォルトの DB に接続するようです。また、他のすべての環境変数が完全に初期化されていることを確認する必要があるため、sudo オプションORACLE_SIDを除外することはできません。-i

私の場合、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 スクリプトを 1 行で直接渡したい場合は、次のようにします。

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

関連情報