Параметр -
стартовая среда средств, которая является почти тем же как со средой входа в систему для того пользователя.
Без -
среда - то же как среда исходного пользователя.
Например, PATH
обычно то же для пользователей root и обычных пользователей. В некоторых системах существует нет sbin
папки для обычных пользователей. Вы не можете отключить -
от su
легко. Конечно, можно пойти для редактирования исходного кода.
Можно попробовать это путем выполнения
export FOO=bar
su # enter your password
echo $FOO
logout
su - # enter your password again
echo $FOO
В первый раз echo $FOO
печать "запрещает", и во втором разе это пусто.
Вы, вероятно, пропускаете новую строку в конце своей самой последней строки.
Я не могу воспроизвести это поведение с ударом 3.2.25 (2) скомпилированный из источника.
Было изменение где-нибудь в 3,2 рядах в пути $(…)
был проанализирован.
uuu. Bash теперь анализирует замены команды согласно правилам Posix: парсинг команды, содержавшейся в $ () для нахождения заключительного разделителя.
Я не знаю, почему я не мог воспроизвести его, если это так, но Вы могли бы поражать старое, ошибочное поведение парсинга. Попытайтесь упростить команду.
parent=$(dirname "$SOURCE")
DIR=$(cd -P "$parent" && pwd)
Я думаю, добавляя, что двойные кавычки вокруг внешней замены команды могли бы помочь. Хотя двойные кавычки не должны иметь значения при использовании их вокруг части значения присвоения я помню версию оболочки, которая имела ошибочный синтаксический анализатор, который повредился на foo=$(something)
но разрешенный foo="$(something)"
; это, возможно, было этим.
-bash: script.sh: line 5: syntax error: unexpected end of file
вместо строки 4, сделал Вы имеете в виду, чтобы я добавил некоторых\r
изобразить где-нибудь? – Nick Klauer 08.03.2012, 21:58