Я хотел бы иметь возможность запускать внешние программы по ссылкам на локальном веб-сайте.
Я определил собственный обработчик протокола в Firefox, установив следующие переменные в about: config
network.protocol-handler.external.myprotocol;true
network.protocol-handler.warn-external.myprotocol;true
Это успешно заставляет Firefox открывать диалоговое окно «Запуск приложения», когда я нажимаю на ссылку в форме myprotocol:///path_to_program_I_want_to_run
, а затем я перехожу к сценарию оболочки, который хочу использовать, и говорю Firefox запустить его. К сожалению, скрипт не запускается вообще.
Я установил права доступа к файлу на 777, чтобы у firefox не было проблем с его запуском
Первоначально сценарий оболочки содержал только строку
$1
Идея заключалась в том, что путь ссылки будет передан в качестве первого аргумента и будет сразу же запущен как программа. Это работало нормально, когда я сам запускал скрипт, используя команды типа
#./run_program.sh gedit
или
#./run_program.sh /home/ciaran/test_program
. Теперь скрипт для тестирования содержит только строку
echo "testing" > /testing/file.txt
где 'testing' - это каталог с разрешениями 777. Также обратите внимание, что /testing/
на самом деле находится в корне моей файловой системы (хотя я не могу вспомнить, зачем я его туда поместил!), Поэтому я не просто перепутал относительные и абсолютные пути
Опять же, это прекрасно работает, когда я запускаю его из терминала, и file.txt
создается в правильном месте. Однако в Firefox мне предоставляется возможность выбрать приложение для запуска, я выбираю этот сценарий оболочки, и он, похоже, ничего не делает. file.txt
вообще не создается, хотя я не вижу проблем с разрешениями. Так что Firefox просто не запускает скрипт.
Я также попытался изменить свой about:config
, чтобы он содержал
network.protocol-handler.expose.camara;true
и
network.protocol-handler.app.camara;path/to/shell/script
, но безуспешно
Нашел проблему
Я не поставил #!/bin/bash
вверху файла. Я в основном думал о сценарии оболочки так же, как о бинарном исполняемом файле или о чем-то другом, а не как о интерпретируемом сценарии, потому что мне не нужна была эта строка для запуска его непосредственно в терминале. Я забыл, что, чтобы запустить его из другой программы, он должен быть запущен через bash
Так что, как только эта строка окажется в верхней части скрипта, вы можете выбрать сценарий оболочки из Firefox в качестве программы для запуска вашего пользовательского ссылки, и ссылка будет успешно передана в сценарий в качестве первого аргумента.