Ярлык для выполнения shell scipt? [duplicate]

На этот вопрос уже есть ответ здесь:

Я пытаюсь создать ярлык, который будет запускать .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.

0
задан 25 February 2015 в 20:30

3 ответа

Вы добираетесь

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

Тогда можно использовать псевдоним, который Вы упомянули в своем вопросе, или вероятно наряду со многими из других ответов, который является здесь.

Удачи!

1
ответ дан 3 August 2019 в 14:29

Вы не устанавливали свой псевдоним правильно, необходимо установить его как так: alias minecraft='sh /var/www/owncloud/data/admin/files/Spigot/start.sh'

1
ответ дан 3 August 2019 в 14:29

Избавиться от ". /" выражение для Вашего сценария, Вам, должно быть, придется установить пользовательский путь для Ваших сценариев в переменной ПУТИ. Можно сделать это любое использование Команды экспорта (который настроит переменную под текущей рабочей средой), или как ниже (для постоянного решения)

Сделать так; Отредактируйте .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

Удачи!

0
ответ дан 3 August 2019 в 14:29

Другие вопросы по тегам:

Похожие вопросы: