sudo herdoc:bash:warning:here文档第0行由文件结尾分隔(需要'EOF…EOF')

sudo herdoc:bash:warning:here文档第0行由文件结尾分隔(需要'EOF…EOF'),bash,sudo,heredoc,Bash,Sudo,Heredoc,我的目标是使用sudo将内容写入另一个用户的xstartup文件 但是我的尝试 sudo -iu user1 bash -lic 'cat > ~/.vnc/xstartup <<\EOF ... EOF' 然而嵌套的遗传算法是有效的 sudo-iuuser1bash-s您有很多不必要的层 sudo -u user1 tee ~user1/.vnc/xstartup > /dev/null <<\EOF ... EOF 这显然更干净,但在我的Ubuntu

我的目标是使用sudo将内容写入另一个用户的xstartup文件

但是我的尝试

sudo -iu user1 bash -lic 'cat > ~/.vnc/xstartup <<\EOF
...
EOF'
然而嵌套的遗传算法是有效的


sudo-iuuser1bash-s您有很多不必要的层

sudo -u user1 tee ~user1/.vnc/xstartup > /dev/null <<\EOF
...
EOF

这显然更干净,但在我的Ubuntu 18.04系统上,它会导致tee:/home/sudouser/.vnc/xstartup:权限被拒绝。另外,我希望~解析为/home/user1,而不是/home/sudouser。@mellow yellow,~user1确实解析为/home/user1,即使由sudouser进行计算也是如此。你确定你正在运行这个程序,就像chepner在~~之后立即提供的目标用户名一样吗?对不起,我这边的输入错误。我不知道除了当前的$id-u路径之外,还可以为用户在路径前面加上~前缀。它工作得很好!非常感谢。这里对sudo使用-i参数是告诉sudo在稍后使用显式bash-lic调用的shell之上再启动一个shell。
sudo -u user1 tee ~user1/.vnc/xstartup > /dev/null <<\EOF
...
EOF