【问题标题】:Soft linking an executable in Cygwin在 Cygwin 中软链接可执行文件
【发布时间】:2017-01-10 02:31:16
【问题描述】:

我正在尝试将 Julia 与 Cygwin 一起使用(我对这两者都不太了解,很清楚)。我已经构建并测试了 Julia,一切似乎都很好。要从终端运行 Julia,我似乎需要在 Julia/usr/bin 中,然后键入 ./julia.exe(或只是 ./julia)。这在任何其他目录中都不起作用。

Julia 文档说

'一旦构建完成,您可以使用上面创建的目录(julia 目录)中的完整路径运行 julia 可执行文件,或者,从任何地方运行它...在julia 目录到 /usr/local/bin (或任何合适的目录已经在你的路径)'

因为我希望能够在任何目录中使用 Julia,这似乎是个好主意。但是,我尝试了

的各种排列

ln -s /Julia/usr/bin/julia /bin

(使用 /bin 而不是 /usr/local/bin 因为这似乎是 cygwin 中保存的东西,而不是 linux 本身),每次我输入 julia 或 ./julia 时,我都会收到一条消息说 -bash: julia: command not found.

我希望这真的很容易 - 我不是很有经验。任何帮助,将不胜感激。

编辑 - 此问题已解决。我为 julia.exe 所在的正确路径尝试了许多不同的可能方法,包括相对路径 Coding/Julia/usr/bin,(我应该首先提到这一点)导致我在下面接受的答案。使用该答案,我现在可以使用命令 julia 在任何目录中的任何位置运行 Julia。

【问题讨论】:

  • 我一直在 Cygwin 中使用 /usr/local/bin 来处理任何不能通过 Cygwin 安装程序安装的东西。你试过ln -s /Julia/usr/bin/julia.exe /usr/local/bin/julia(或者你想放的任何地方)吗?也就是在命令行中包含.exe部分?
  • 刚刚试了一下(在 /usr/local/bin 中,以防它产生影响) - 仍然收到相同的错误消息。我尝试过使用 .exe 和不使用,并以 ./ 开头(不完全确定它会做什么,除非它使 .exes 运行)但我无法让它工作。
  • 您可以检查 */bin 目录的 PATH 和权限。如果您执行echo $PATH,您应该将/usr/local/bin:/usr/bin: 作为第一个条目。尝试ln -s 命令后,ls -l /Julia/usr/bin/julia.exels -l /usr/local/bin/julia 的输出是什么?
  • 以下是所有相关命令 - 看起来应该可以工作?但仍然是相同的错误消息。 Ben@Ben-PC ~ $ ln -s Coding/Julia/usr/bin/julia.exe /usr/local/bin/julia Ben@Ben-PC ~ $ julia -bash: julia: command not found Ben@Ben-PC ~ $ ls -l Coding/Julia/usr/bin/julia.exe -rwxr-xr-x 1 Ben None 1515029 Jan 13 22:16 Coding/Julia/usr/bin/julia.exe Ben@Ben-PC ~ $ ls -l /usr/local/bin/julia lrwxrwxrwx 1 Ben None 17 年 1 月 30 日 21:21 /usr/local/bin/julia -> 编码/Julia/usr/bin/julia.exe
  • 这是我从 echo $PATH 得到的:/usr/local/bin:/usr/bin:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c /Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0

标签: cygwin executable symlink julia


【解决方案1】:

问题在于ln 需要链接到一个绝对 路径,而不是相对路径。该问题在 OP 中并不明显,因为您编写的路径看起来是绝对的,因为它以/ 开头。

ln -s /home/<username>/Coding/Julia/usr/bin/julia.exe /usr/local/bin/julia.exe 之类的东西应该可以工作。

注意: 通过在您的 LINK_NAME 末尾包含.exe,您可以同时调用juliajulia.exe。无论您是否打算使用长格式,最好在 TARGET 和 LINK_NAME 中都包含 .exe

【讨论】:

  • @KeithThompson 我愿意犯错,但是没有/ 的路径不会总是在当前目录下面(即相对)寻找该路径?使用的实际路径是Coding/Julia/usr/bin/julia.exe,这是我指的相对路径。
  • 是的,不以/ 开头的路径是相对路径,相对于当前目录进行解释。以/ 开头的路径根据定义是绝对路径,并且相对于根目录进行解释。问题中的路径是/Julia/usr/bin/julia。这是一个绝对路径,但它是无效的,因为(大概)没有/Julia 目录。我指的是问题中的路径;我没有读过cmets。
  • 如果您查看 cmets,OP 实际上使用的是相对路径,我注意到我的回答中存在差异。
  • 您应该在两个参数中都包含.exe。我修改了答案以说明原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-17
  • 1970-01-01
  • 2010-09-07
  • 1970-01-01
  • 2011-06-07
  • 1970-01-01
相关资源
最近更新 更多