我正在尝试创建一个快捷方式,它将在某个目录深处运行 .sh 文件,而无需导航到绝对路径。
我尝试过使用别名,但不起作用。使用软/硬链接,它们也不起作用,因为 shell 脚本引用的目录中存在某些依赖项。
有谁知道如何./
在不遍历绝对路径的情况下获取文件吗?
我尝试过的别名是:
alias minecraft='/var/www/owncloud/data/admin/files/Spigot/start.sh'
PATH=/var/www/owncloud/data/admin/files/Spigot:"$PATH"
我已经尝试通过添加到来使用 Path 变体~/.bashrc
。
这带来了这样的信息:
Error: Unable to access jarfile spigot.jar
如果有帮助的话,我正在使用 Ubuntu 的 CLI 版本,所以没有 Nautilus。
答案1
您将获得
Error: Unable to access jarfile spigot.jar
错误消息是因为脚本在执行时使用了您的 bash 环境工作目录。脚本可能正在执行,java -jar spigot.jar
而 spigot.jar 文件必须位于同一目录中。由于您的脚本环境指向另一个目录,因此无法找到该文件。
要修复此问题,请编辑/var/www/owncloud/data/admin/files/Spigot/start.sh
文件并在执行 java 的命令上方添加此行。
cd "$( dirname "${BASH_SOURCE[0]}" )"
此命令将脚本的当前执行目录更改为其所在的目录。
结果应该是这样的:
#!/bin/bash
cd "$( dirname "${BASH_SOURCE[0]}" )"
java -jar spigot.jar
然后,您可以使用您在问题中提到的别名,或者可能与此处的许多其他答案一起使用。
祝你好运!
答案2
您没有正确设置别名,您应该像这样设置:alias minecraft='sh /var/www/owncloud/data/admin/files/Spigot/start.sh'
答案3
要删除脚本中的“./”表达式,您必须在 PATH 变量中设置脚本的自定义路径。您可以使用 export 命令(将在当前运行环境下设置变量)或按如下方式执行此操作(永久解决方案)
为此;编辑.bashrc使用您喜欢的编辑器在您的主目录中创建文件
vi .bashrc
您可以在文件末尾粘贴以下代码。
#custom variable
export PATH=$PATH:/$HOME/bin:/var/www/owncloud/data/admin/files/Spigot/
上述命令为您的脚本文件位置设置了附加路径,在本例中是 Spigot 文件夹中的 .sh 脚本。
导出路径时必须记住的一件事是,您必须将现有 PATH 变量的内容复制到文件中,或者使用其他编辑器复制到文本文件中echo $PATH >> variables.txt
我这样说的原因是,如果您丢失了变量路径,您将无法使用别名运行其他命令。
最后:输入
exec bash
我已经测试过了,希望它对你来说也能正常工作。你也应该能够在不输入完整路径的情况下运行脚本。它应该可以正常工作 启动脚本
祝你好运!