Я записал сценарий удара, найденный в каталоге:
/home/harmelodic/.Jetbrains/CLion.sh
это выполняет следующее:
#!/bin/sh
./clion*/bin/clion.sh
Это должно работать clion.sh
сценарий, найденный в:
/home/matthew/.Jetbrains/clion-2016.2.3/bin/clion.sh
Если я открываю терминал в /home/harmelodic/.Jetbrains/
и выполните:
$ ./CLion.sh
Это успешно выполняет и открывает CLion IDE.
Однако, если я использую средство запуска от Средства поиска Приложения для выполнения a Command
для выполнения сценария (как показано ниже) IDE CLion не удается открыться.
Я полностью озадачен. Я думал Command
вход запустил бы прекрасный скрипт, но он не делает.
Я удостоверился, что сценарий является исполняемым файлом и что он работает через терминал, но он отказывается работать через средство запуска, найденное в Средстве поиска Приложения.
Да ведь и как я фиксирую это?
Ну, у нас была ошибка PEBCAK...
Я по ошибке думал, что, если бы я запустил скрипт, сценарий автоматически знал бы, где сам был и использовал бы, это - текущее местоположение как относительный путь.
Дело обстоит не так это складывается. Сценарий будет рассматривать любое местоположение, от которого пользователь запускает скрипт как путь для использования при обращении к относительным путям.
Означание этого, если я перешел в /home/harmelodic/
и работал:
$ ./.Jetbrains/CLion.sh
Сценарий перестал бы работать, поскольку он будет искать /clion*/bin/clion.sh
в:
/home/harmelodic/
вместо
/home/harmelodic/.Jetbrains/
Решение состояло в том, чтобы получить текущий каталог сценария и затем выполнить команду с помощью текущего каталога, объединенного с относительным путем для имитации относительного пути при фактическом использовании полных путей:
#!/bin/sh
CURRENT_DIR=`dirname $0`
$CURRENT_DIR/clion*/bin/clion.sh
Это работает из любого каталога, означая, что он работает в средстве запуска от Средства поиска Приложения.