如何将参数传递给 linux 中的 .运行 文件

How to pass parameters to a .run file in linux

我有 example.run 文件(二进制文件),它将在我的 linux 环境中安装一个简单的软件。我想用 chef 自动安装,但问题是在安装过程中软件要求接受许可证(所以我必须输入 yes )我想看看有没有办法用 .[=18 传递参数=] 文件或厨师可以为我或等输入是

file Talend-Installer-20150508_1414-V5.6.2-linux64.run

Talend-Installer-20150508_1414-V5.6.2-linux64.run: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, stripped

这取决于文件(没有理由每个 *.run 安装程序的行为都相似)。尝试 Talend-Installer-20150508_1414-V5.6.2-linux64-installer.run --helpTalend-Installer-20150508_1414-V5.6.2-linux64-installer.run -h 并阅读其文档...有时会有接受许可证的选项。您也可以考虑在管道中使用 yes(1)

yes | yourfile.run

但要小心。如果 yourfile.run 礼貌地问:

can I remove every file in /home/ ? [yN]

(当然,对于任何脚本或可执行文件,您需要使用 chmod u+rx 启用可执行性和读取功能,然后更改 PATH 或使用 ./yourfile.run 或其绝对或相对文件路径等...)

您也可以尝试在该可执行文件上使用 strings(1),或许可以猜测(通过内部的一些字符串消息),什么是可能的。

参数传递是通过 execve(2) and your shell is in charge of globbing 完成的 - 在执行 execve 之前 - 因此没有关于 运行 *.run 文件的具体信息。

我强烈建议花几天时间来了解更多 Linux。也许先阅读 Advanced Linux Programming & Advanced Bash Scripting Guide (and of course, documentation of Chef and of the Talend product you are installing); if you experiment sysadmin things without understanding, you might mess your system to the point of losing data and having to reinstall everything. Both echo(1) & strace(1) 也可能有用。