如何使符号链接可执行?

xia*_*dai 2 symlink

我正在使用 Cloud9.io IDE。

我已经下载了 Julia 通用可执行文件并解压缩了它。

sudo wget https://julialang-s3.julialang.org/bin/linux/x64/1.0/julia-1.0.3-linux-x86_64.tar.gz
tar xvzf julia-1.0.3-linux-x86_64.tar.gz
Run Code Online (Sandbox Code Playgroud)

现在我可以通过julia-1.0.3/bin/julia.

所以下一步我尝试创建一个符号链接,所以我只需输入julia. 所以我试过了

sudo ln -s julia-1.0.3/bin/julia julia

当我运行时julia它说

bash:julia:找不到命令

但该文件显然在我的目录中。我在这里缺少什么?

jll*_*gre 5

回答标题中提出的问题。

使符号链接可执行(或就此而言不可执行)不需要任何内容​​。

实际上,符号链接权限在包括 Linux 在内的大多数操作系统上都没有用处。考虑的执行权限是链接到的文件的权限(如果有)。


ozz*_*zzy 4

仅当 Bash 位于其搜索路径(存储在 PATH 变量中)时,才会找到由其裸文件名指定的可执行文件(即没有前面的路径元素)。当前目录不一定位于搜索路径上。

要查看当前搜索路径,请尝试以下操作:

echo $PATH
Run Code Online (Sandbox Code Playgroud)

要查看命令是否在您的搜索路径上,请尝试以下操作:

which command
Run Code Online (Sandbox Code Playgroud)

如果command位于搜索路径上,该which命令将返回该命令在文件系统上的位置。- 要使用命令目录扩展搜索路径,请尝试:

PATH=$PATH:directory_to_be_added
Run Code Online (Sandbox Code Playgroud)

请注意,directory_to_be_added应该是可执行文件的完整目录名称(而不是相对于当前目录的目录)。

将命令的目录julia添加到 PATH 后,which julia应该返回julia的完整路径名,并且julia应该可以从文件系统上的任何位置执行。

更改 PATH 是确保 shell 找到您经常使用的可执行文件的通用方法。如果您只想运行一次不在搜索路径上的命令(即一次性尝试),或者您希望覆盖搜索路径,则可以指定包含路径名元素的命令。因此,要运行当前目录中而不是搜索路径上的命令(或者不是搜索路径上具有该名称的第一个命令),您可以使用./command.

  • @xiaodai 仅当您尝试执行的“命令”中没有路径元素时才会查询 PATH。因此,您可以通过给出命令“./julia”(“./”是阻止 PATH 搜索的路径元素)从当前目录运行“julia”。同样,您的命令“julia-1.0.3/bin/julia”包含路径元素,这会导致 Bash 不搜索 PATH,而是直接运行指定的可执行文件。 (3认同)
  • 我建议在你的答案中加入关于“./julia”的部分——这是人们所做的正常事情。 (3认同)