/usr/bin/linkhandler: 10: /usr/bin/linkhandler: : Permission denied
Это сообщение об ошибке от оболочки, выполняющей сценарий. Это немного неудобно читать, но есть 10
, который может быть номером строки, и стоит обратить внимание на странное двойное двоеточие : :
перед сообщением об ошибке Permission denied
. Как будто перед вторым двоеточием должна быть еще одна строка, но эта строка пуста.
Ваша строка 10
[ -z "$1" ] && { "$BROWSER"; exit; }
И потенциальная проблема заключается в том, что $BROWSER
может быть пустым. Это по-прежнему не объясняет, почему имя скрипта снова присутствует, или если пустое значение вызовет эту ошибку. Итак, давайте попробуем воспроизвести это:
$ cat foo.sh
#!/bin/dash
unset FOO
"$FOO"
$./foo.sh
./foo.sh: 3:./foo.sh: : Permission denied
В Dash, Debian и Ubuntu /bin/sh
сообщение об ошибке при выполнении команды с пустым сообщением выглядит очень похоже, и действительно, по какой-то причине имя сценария дублируется в сообщении об ошибке. (В Bash сообщение об ошибке будет другим.)
Итак, может показаться, что проблема действительно в том, что $BROWSER
пусто. Вы можете проверить это с помощью [ -z "$BROWSER" ]
или указать значение по умолчанию, используя "${BROWSER-/usr/bin/sensible-browser}"
с соответствующим путем.