从不同位置的另一个 shell 文件运行一些 shell 文件

从不同位置的另一个 shell 文件运行一些 shell 文件

我的 ubuntu 系统上的特定位置有 5 个 shell 文件。我在这个系统上有两个用户,userA分别是主用户和userB。目前,我必须使用用户手动打开一个终端userA,然后运行一系列终端命令,其中包括运行我拥有的 5 个 shell 文件中的 4 个,然后我打开另一个终端并切换到userB,然后运行一系列命令和 1 个 shell 文件。我想要做的是在桌面上有两个 shell 文件(例如userA.shuserB.sh),当我双击时,userA.sh它将使用打开一个终端userA,然后运行一系列命令,其中包括运行四个 shell 文件,当我双击时,userB.sh它将打开另一个终端并切换到userB,然后运行一系列命令,其中包括一个 shell 脚本。

编辑:

这是我根据 Muru 的建议所做的:我scriptA.sh在桌面上创建了一个并使其可执行,然后它的内容是:

#!/bin/bash
sudo -u userA bash -c 'PACKAGE_PATH=/home/userA/package1; cd /home/userA/scripts'

但双击它并选择run with terminal选项后,终端会打开一秒钟然后自动关闭。我不知道为什么会发生这种情况,所以如果有人能告诉我为什么会发生这种情况以及如何解决它,我将不胜感激。

答案1

您必须sudo在某个地方使用它们。让我们在脚本中使用它们:

#! /bin/bash
#userA.sh

sudo -u userA bash -c '/path/to/script1.sh; /path/to/script2.sh; ... \
    /path/to/scriptn.sh; 

同样地userB,考虑创建.desktop 文件对于两个脚本,或者让它们运行双击。然后考虑为这两个脚本授予自己无密码的权限:

sudo tee -a /etc/sudoers.d/user-scripts <<EOF
$USER ALL = (ALL) NOPASSWD: /path/to/userA.sh, /path/to/userB.sh
EOF

如果你确实想输入密码,请让它们在终端中运行(取决于你如何执行脚本),或者使用pkexec代替sudo

相关内容