Использование собственного обработчика протокола в Firefox для запуска сценария оболочки?

Я хотел бы иметь возможность запускать внешние программы по ссылкам на локальном веб-сайте.

Я определил собственный обработчик протокола в 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

, но безуспешно

5
задан 9 July 2012 в 17:24

1 ответ

Нашел проблему

Я не поставил #!/bin/bash вверху файла. Я в основном думал о сценарии оболочки так же, как о бинарном исполняемом файле или о чем-то другом, а не как о интерпретируемом сценарии, потому что мне не нужна была эта строка для запуска его непосредственно в терминале. Я забыл, что, чтобы запустить его из другой программы, он должен быть запущен через bash

Так что, как только эта строка окажется в верхней части скрипта, вы можете выбрать сценарий оболочки из Firefox в качестве программы для запуска вашего пользовательского ссылки, и ссылка будет успешно передана в сценарий в качестве первого аргумента.

0
ответ дан 9 July 2012 в 17:24

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

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