Shell-Script
為什麼在 sudo su 之後缺少傳遞給 .sh 文件的參數?
我需要
.sh
從我的本地機器在我的伺服器上執行文件。我可以使用下面的命令來做到這一點。ssh -p my_port_no -i path_to_key user@ip_address "bash -s" < testOnServer.sh
現在我需要用上面的命令傳遞一些參數。我做瞭如下,它是成功的。
ssh -p my_port_no -i path_to_key user@ip_address "bash -s" < testOnServer.sh testArg1
我的
testOnServer.sh
文件如下。testArg1=$1 echo testArg1 # testArg1 can be seen here. sudo su echo testArg1 # testArg1 is missing here.
命令
testArg1
後缺少的值。sudo su
非常感謝任何幫助。
使用 sudo su 將 shell 更改為新使用者,即 root。因此,這些變數在新 shell 中不可用。
要共享變數,您必須將它們發佈到環境中,以便 root 訪問。所以在 sudo su 命令之後值 testArg1 不是“失去”……當你改變 shell 時它沒有被列印出來。
而是編輯 sudoers 文件以允許您的使用者直接執行您需要的命令(如果必須)。
查看以前的文章,例如在執行 bash 腳本時阻止所有預設命令?,關於使用“源”等來控制變數訪問。並閱讀一些關於 Bash 變數範圍的資訊,例如。使用Bash 使用者指南。