以编程方式使 bash 脚本可执行

HIl*_*ics 12 bash scripts executable

我需要创建一个 bash 脚本来创建和安装驱动器。所以,两个简单的命令。在命令行输入时,两者都“工作”。

每次普通用户登录时都会创建并执行该脚本,因此我需要一种方法来使该脚本在当时可以执行。到目前为止,我无法让它发挥作用。例如,第一部分mkdir /vvv/gggg不会继续,因为脚本不可执行(我猜)。

希望这是有道理的。这可能吗?任何关于如何使这项工作的想法将不胜感激。

更新

感谢您的回复。除了我是 Linux 新手之外,我可能应该添加一些其他信息。

我正在使用一个名为 Ulteo 的开源虚拟桌面应用程序。这个应用程序运行在 Ubuntu 之上,几乎没有支持——这就是我在这里的原因。基本上,我正在学习。

因此,该应用程序具有登录脚本管理功能,我可以在其中将脚本绑定到用户。一个简单的带有网络使用的 Windows 脚本工作得很好。但是,当我尝试应用 Linux bash 脚本时,没有任何反应。

我在想,因为我需要先chmod +x对脚本执行 a以使脚本可执行,这就是它失败的原因。顺便说一下,Ulteo 在 chroot jail 中运行。我创建了一个脚本,保存了它,但找不到脚本。我在 chroot 监狱内外进行了搜索。

我喜欢 dan08 的方法,让初始脚本引用另一个脚本,我可以手动找到并使其可执行。我会遇到同样的问题吗?

这些附加信息是否说明了情况?提前致谢。

附上照片。

![登录scipt管理控制台][1]

![有效的windows脚本][2]

![不起作用的简单 linux 脚本][3]

抱歉我还不能发图片

Ed *_*net 19

您需要做两件事:

  1. 引用脚本开头的脚本解释器:

    #!/bin/bash
    
    Run Code Online (Sandbox Code Playgroud)
  2. 设置权限以使其可执行:

    chmod +x myscript.sh
    
    Run Code Online (Sandbox Code Playgroud)


Dan*_*Dan 3

您可以采用不同的方法并更改调用脚本的方式,而不是使脚本可执行。

script.sh足以运行可执行脚本。

然而

如果指定程序来运行不可执行的脚本,则可以运行该脚本。

因此/bin/bash script.shbash script.shpython script.py将全部运行不可执行的脚本。

所以我的建议是编辑脚本的调用方式,并指定用于运行它的二进制文件。


akx*_*xer 0

用C、C++或Python等创建程序并使用系统命令执行bash脚本。

例如,C 程序如下所示:

#include "stdio.h"
int main(int argc, char const *argv[])
{
    system('chmod +x path/yourbashscript.sh');
    system('path/yourbashscript.sh');
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

要在启动时执行该程序,请将其添加到启动程序列表中。从仪表板中打开启动应用程序,然后单击“添加”按钮将已编译的可执行文件添加到列表中。

  • -1:这并不是一个真正的答案。为什么 python 比 shell 脚本更好?更不用说C了!无论如何,您实际上并没有展示该程序的外观,也没有解释如何将程序添加到启动程序列表。 (2认同)