ked*_*ond 5 installation files executable
我有一个名为“octane”的可执行文件,我希望能够在全球范围内启动它。可执行文件需要访问本地二进制文件“octane.dat”才能运行。
我将包含可执行文件和二进制文件的目录作为 root 放在 /opt/ 中,并在 /usr/local/bin/ 中创建了可执行文件的符号链接。现在,如果我在任何地方输入“octane”,它会启动,但会抛出一个错误,说它不会在没有二进制文件“octane.dat”的情况下运行。只有当我当前的工作目录与 /usr/local/bin 中的可执行文件和二进制文件相同时,Octane 才会启动。
对于如何解决这个问题,有任何的建议吗?我是否必须使用 .bashrc 将该目录设为全局?
谢谢。
您可以在 /usr/local/bin 中创建包装脚本,而不是符号链接:
#! /bin/sh
cd /opt/octane
exec ./octane "$@"
Run Code Online (Sandbox Code Playgroud)
使脚本可执行chmod +x /usr/local/bin/octane。
“$@”是命令行参数,因此您仍然可以运行octane an_argument.
该脚本仅在脚本内部更改 CWD(当前工作目录),因为该脚本在一个全新的 shell 实例中运行,该实例在脚本末尾结束。如果您想为可执行文件提供相对路径名,更改可执行文件的当前工作目录实际上可能是一个问题。例如,如果您在主目录中并运行octane a_file_in_the_home_directory,则它不起作用,因为辛烷可执行文件是使用 /opt/octane 的 CWD 调用的,而 a_file_in_the_home_directory 不在 /opt/octane 中。如果这是一个问题,您可以记住只提供绝对路径名 ( octane ~/a_file_in_the_home_directory) 或使用更复杂的脚本版本。
| 归档时间: |
|
| 查看次数: |
2380 次 |
| 最近记录: |