Ошибка сценария Bash, пытающаяся найти каталог самого сценария: неожиданный конец файла

Параметр - стартовая среда средств, которая является почти тем же как со средой входа в систему для того пользователя.

Без - среда - то же как среда исходного пользователя.

Например, PATH обычно то же для пользователей root и обычных пользователей. В некоторых системах существует нет sbin папки для обычных пользователей. Вы не можете отключить - от su легко. Конечно, можно пойти для редактирования исходного кода.

Можно попробовать это путем выполнения

export FOO=bar
su # enter your password
echo $FOO
logout
su - # enter your password again
echo $FOO

В первый раз echo $FOO печать "запрещает", и во втором разе это пусто.

0
23.05.2017, 15:39
2 ответа

Вы, вероятно, пропускаете новую строку в конце своей самой последней строки.

1
28.01.2020, 02:53
  • 1
    я не уверен, что Вы имеете в виду, но если я просто добавляю другую новую строку, я добираюсь -bash: script.sh: line 5: syntax error: unexpected end of file вместо строки 4, сделал Вы имеете в виду, чтобы я добавил некоторых \r изобразить где-нибудь? –  Nick Klauer 08.03.2012, 21:58
  • 2
    @NickKlauer я не получаю ошибку в ударе 4, возможно, существует bash4 функция, что это не анализирует право –  Kevin 08.03.2012, 22:05

Я не могу воспроизвести это поведение с ударом 3.2.25 (2) скомпилированный из источника.

Было изменение где-нибудь в 3,2 рядах в пути $(…) был проанализирован.

uuu. Bash теперь анализирует замены команды согласно правилам Posix: парсинг команды, содержавшейся в $ () для нахождения заключительного разделителя.

Я не знаю, почему я не мог воспроизвести его, если это так, но Вы могли бы поражать старое, ошибочное поведение парсинга. Попытайтесь упростить команду.

parent=$(dirname "$SOURCE")
DIR=$(cd -P "$parent" && pwd)

Я думаю, добавляя, что двойные кавычки вокруг внешней замены команды могли бы помочь. Хотя двойные кавычки не должны иметь значения при использовании их вокруг части значения присвоения я помню версию оболочки, которая имела ошибочный синтаксический анализатор, который повредился на foo=$(something) но разрешенный foo="$(something)"; это, возможно, было этим.

0
28.01.2020, 02:53

Теги

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