Bash
sudo -u user bash 有效,但 $HOME 沒有相應改變
我正在編寫一個腳本來設置新的 debian 安裝。問題出在這段程式碼中:
if [ ! -z "$USER1" ] then sudo -u "$USER1" bash <<-EOF cp "$BASHRC $HOME"/.bashrc wget https://raw.github.com/trapd00r/LS_COLORS/master/LS_COLORS -O "$HOME"/.dircolors echo 'eval $(dircolors -b $HOME/.dircolors)' >> "$HOME"/.bashrc . "$HOME"/.bashrc echo "Here is LS_COLORS in action: " ls -l "$HOME"/ EOF
問題:
當我對另一個使用者執行 sudo 時,$HOME 變數沒有顯示/更改這個新使用者的主目錄。
問題:
你能給我解釋一下這個問題嗎?
我將如何以最好和最有效的方式做到這一點?
編輯:
為什麼我的 cp 命令中不斷出現“
cp: cannot stat '': No such file or directory
”或“cp: missing opereand
”?我認為這與 $HOME 再次有關…………
here-doc 內容在
sudo
呼叫之前進行評估。這意味著 的每個實例$HOME
都在呼叫者的上下文中,而不是sudo
. 你可以在這裡看到這個:A=apple bash <<-EOF A=banana echo "$A" EOF
輸出是
apple
如果你引用你的
EOF
標記,它的內容將被相應地引用:A=apple bash <<-'EOF' A=banana echo "$A" EOF
輸出
banana