必须使用路径执行可执行文件。为什么?

时间:2017-06-28 12:56:24

标签: unix

以下内容:

Roberts-MacBook-Pro:Code robertnash$ mkdir Flag
Roberts-MacBook-Pro:Code robertnash$ cd Flag/
Roberts-MacBook-Pro:Flag robertnash$ swift package init --type executable
Roberts-MacBook-Pro:Flag robertnash$ swift build
Compile Swift Module 'Flag' (1 sources)
Linking ./.build/debug/Flag

为了执行可执行文件,它必须是路径,如此

Roberts-MacBook-Pro:Flag robertnash$ .build/debug/Flag
Hello, world!

如果我去'Flag'所在的位置,只需输入'Flag'就无法运行该命令。

Roberts-MacBook-Pro:Flag robertnash$ cd .build
Roberts-MacBook-Pro:.build robertnash$ cd debug
Roberts-MacBook-Pro:debug robertnash$ Flag
-bash: Flag: command not found

它必须是一条道路,就像这样。

Roberts-MacBook-Pro:debug robertnash$ ./Flag

为什么?

1 个答案:

答案 0 :(得分:0)

如果您运行DueDate Desc Amount 06-29-2015 ABC 100 DEF 200 01-15-2015 ABC 100 DEF 200 ,那么它会将当前工作目录添加到您的路径中,您不会需要export PATH="$PATH:."前缀。 (大多数(全部?)shell只接受一个没有点的尾随冒号,但我发现它更清楚它的作用。)

默认情况下,这不存在,因为它存在安全风险:恶意脚本可能被命名为路径中缺少的内容,例如./或甚至是nmap之类的拼写错误,并放在一个目录中,希望你运行它。强制你前缀sl是避免这种情况的好方法。