Bash
導出變數,使其出現在通過 sudo 獲取的腳本中
我有一個 bash 腳本/s,它有一個以
sudo
.變數在此腳本中聲明。
然後它獲取另一個
commands.sh
腳本,但是該腳本sudo
在獲取腳本時用於返回給普通使用者commands.sh
。文件:
main.sh
#!/bin/bash user=ubuntu export $user sudo -u $user bash -c "source includes-shared/commands.sh"
文件:
includes-shared/commands.sh
# debug command to see if $user is available printenv [ more commands...]
該變數
$user
不再出現在該腳本中,即它對其他命令commands.sh
不可見。 如何導出以便源腳本可以使用它?printenv
$user
您需要針對變數的名稱執行導出。現在,該變數在 export 看到它之前被引用和替換。
將其更改為:
export user
注意缺少
$
您目前的版本基本上是這樣的:
export ubuntu
因為
$user
首先被解釋。使用 sudo 時,您還失去了環境變數。有兩種方法可以保存它們。要麼保持你的整個環境
sudo -E -u $user command
或者只保留您需要的變數
sudo user=$user -u $user command