На этот вопрос уже есть ответ здесь:
Я пытаюсь создать ярлык, который будет запускать .sh файл в глубине некоторого каталога без необходимости перехода к абсолютному пути.
Я пробовал использовать псевдонимы, которые не сработали. Использование мягких/жестких ссылок тоже не сработало, так как в каталоге есть определенные зависимости, на которые ссылается сценарий оболочки.
У кого-нибудь есть идеи, как ./
файл без необходимости проходить по абсолютному пути?
Псевдоним, который я пробовал, это :
alias minecraft='/var/www/owncloud/data/admin/files/Spigot/start.sh'
Я попробовал вариант Path, добавив PATH=/var/www/owncloud/data/admin/files/Spigot:"$PATH"
в ~/.bashrc
.
Что приводит к сообщению :
Error: Unable to access jarfile spigot.jar
Я использую cli версию Ubuntu, если это поможет, поэтому нет Nautilus.
Вы добираетесь
Error: Unable to access jarfile spigot.jar
Errormessage, потому что сценарий использует Вашу среду удара рабочий каталог, когда это выполняется. Сценарий, вероятно, выполняется 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
Тогда можно использовать псевдоним, который Вы упомянули в своем вопросе, или вероятно наряду со многими из других ответов, который является здесь.
Удачи!
Вы не устанавливали свой псевдоним правильно, необходимо установить его как так: alias minecraft='sh /var/www/owncloud/data/admin/files/Spigot/start.sh'
Избавиться от ". /" выражение для Вашего сценария, Вам, должно быть, придется установить пользовательский путь для Ваших сценариев в переменной ПУТИ. Можно сделать это любое использование Команды экспорта (который настроит переменную под текущей рабочей средой), или как ниже (для постоянного решения)
Сделать так; Отредактируйте .bashrc файл в своем корневом каталоге с Вашим любимым Редактором
vi .bashrc
в конце файла можно вставить следующий код.
#custom variable
export PATH=$PATH:/$HOME/bin:/var/www/owncloud/data/admin/files/Spigot/
Выше наборов команд дополнительные пути для Вашего расположения файла сценария, в этом случае Ваш .sh сценарий в папке Spigot.
Одна вещь, которую необходимо помнить при экспорте пути, или Вы должны скопировать содержание существующей переменной ПУТИ в файл или в текстовом файле с помощью другого редактора, которого можно сделать echo $PATH >> variables.txt
Причина, почему, как я говорю так, то, если в случае, если Вы потеряли путь переменной, Вы привычка смочь выполнить другие команды вообще с псевдонимами.
Наконец: ввести exec bash
Я протестировал его, надеются, что это хорошо работает для Вас также. Необходимо также смочь запустить скрипт, не вводя полный путь. Это должно работать start.sh
Удачи!