我的 ubuntu 系统上的特定位置有 5 个 shell 文件。我在这个系统上有两个用户,userA
分别是主用户和userB
。目前,我必须使用用户手动打开一个终端userA
,然后运行一系列终端命令,其中包括运行我拥有的 5 个 shell 文件中的 4 个,然后我打开另一个终端并切换到userB
,然后运行一系列命令和 1 个 shell 文件。我想要做的是在桌面上有两个 shell 文件(例如userA.sh
和userB.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
。