从任意位置运行已编译的 c 程序

从任意位置运行已编译的 c 程序

快问快答。编译完一个程序后,我总是必须通过在名称前面添加 ./ 来明确告诉它从当前目录运行。例如$ ./testprog -argument1

有没有办法设置某种别名,让我只需说一下就可以调用它$ testprog -argument1,本质上允许我从任何位置运行该程序?

答案1

PATH=$PATH:.... 很容易处理 ./ 部分... 这是您关注的重点,但更加关注并不是真正的重点。除此之外,我们中的许多人出于安全原因对此不以为然。参见将当前目录添加到路径以进一步讨论该方面。

如果我误解了(我确实误解了),我会详细说明@DavidShwartz 所说的内容。

您剩下的选项包括将相关目录指定为路径的一部分 ( PATH=$PATH:/to/your/executable/dir),或者如果您只考虑了几个程序或它们分散在许多位置,则使用符号链接。如果您要使用符号链接路线,我建议将其设置~/bin为路径末尾并在~/bin...中创建符号链接

ln -s /to/your/executable/dir/program ~/bin/program

几乎总是最好在 $PATH 语句的末尾添加额外的路径。您很少希望任何东西覆盖系统文件。这将解决到达它的问题。

对于最后一部分,您可以将一个 shell 脚本放在您的某个 $PATH 目录中,其中包含您要传递的选项。您可以真正地作弊并完全跳过整个路径:(alias runmyprogram '/to/your/executable/dir/program -argument1'如果您总是需要它们,您也可以在这里包含打开参数)

还有更多,但是路径中的 shell 脚本或别名命令应该可以做到。

答案2

将您的可执行文件放入 $PATH 中的文件夹或将包含该可执行文件的目录添加到 $PATH

答案3

大多数平台bin都为此类内容提供了特定于用户的目录。

您可以尝试使用类似命令echo "${PATH}"来查看路径中是否有这样的目录。在路径中查找类似内容/home/fred/bin。它通常非常接近开头,以便您可以根据需要覆盖标准命令。(小心!)

如果看到该内容,请确保您bin的目录中有一个目录home,并将可执行文件放在那里。

答案4

您可以将程序放在您喜欢的地方,创建一个调用程序的 bashscript(即指向程序的位置)并传递参数。将其命名为 mycommand 并将其放在 /usr/bin 中。执行 chmod +x /usr/bin/mycommand,您现在就有了一个调用程序的命令。

相关内容