Linux
在 su - 使用者中找不到導出命令
從 root 開始,我想用另一個 .sql 腳本執行一個 sql 腳本
$USER
。但我必須設置 right$ORACLE_HOME
和$PATH
for$USER
。使用此命令,我收到錯誤***
export: command not found
***su - $USER -c "export ORACLE_HOME=$ORA_HOME;export PATH=$ORA_HOME/bin:$PATH;sqlplus / as sysdba"
我的問題是:開始在 root 中執行腳本,如何為另一個使用者導出環境變數並使用該環境變數執行命令?
正如 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 變數。
無論如何,您都不需要導出。趕緊跑:
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"