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

Hea*_*pin 2 shell bash path

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

有没有办法设置某种别名,允许我简单地通过说来调用它$ testprog -argument1,基本上允许我从任何位置运行程序?

Jef*_*and 5

PATH=$PATH:.... 很容易处理你关注的 ./ 部分...,但更多的关注并不是真正的重点。除此之外,出于安全原因,我们中的许多人都不喜欢它。有关这方面的更多讨论,请参阅将当前目录添加到路径

如果我误解了(我有),我将扩展@DavidShwartz 所说的内容。

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

ln -s /to/your/executable/dir/program ~/bin/program
Run Code Online (Sandbox Code Playgroud)

在 $PATH 语句的末尾放置额外的路径几乎总是最好的。很少有人想要覆盖系统文件。这将照顾到它。

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

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

  • @DavidSchwartz 在问题结束时潜行攻击方向变化。知道了。我得到了标题固定。:) (2认同)