bash - 我如何使用 su 作为该用户执行 bash 脚本的其余部分?

标签 bash permissions sudo user-permissions su

我编写了一个脚本,该脚本将一个字符串作为参数,该字符串是用户名和项目的串联。该脚本应该根据项目字符串切换 (su) 到用户名,cd 到特定目录。

我基本上想做的是:

su $USERNAME;  
cd /home/$USERNAME/$PROJECT;  
svn update;  

问题是一旦我做了一个 su... 它就在那里等着。这是有道理的,因为执行流程已经转移到切换到用户。一旦我退出,其余的事情就会执行,但它不会按预期工作。

我在 svn 命令前添加了 su 但命令失败(即它没有更新所需目录中的 svn)。

如何编写允许用户切换用户并调用 svn(以及其他)的脚本?

最佳答案

更简单:使用 sudo 运行 shell 并使用 heredoc向它提供命令。

#!/usr/bin/env bash
whoami
sudo -i -u someuser bash << EOF
echo "In"
whoami
EOF
echo "Out"
whoami

(回答originally on SuperUser)

关于bash - 我如何使用 su 作为该用户执行 bash 脚本的其余部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1988249/

相关文章:

linux - Unix 路径需要重新排序

linux - Bash 抓取目录名称以在循环中使用

powershell - 如何测试特定 Active Directory 树位置是否允许使用 powershell 命令

ubuntu - 包 'samba' 没有安装候选

bash - VNC 查看器无法与 "channel 3: open failed: connect failed: No route to host"建立连接

linux - sed -i 帮助(bash)

asp.net - 确定 IIS 7 使用什么帐户来访问文件夹(和其他资源)

linux - 为 Web 文件夹分配权限的最佳做法

linux - 无法使用 Paramiko 的 sudo 命令的交互式远程密码输入

linux - X11:以另一个用户身份运行 gnome 应用程序