Я понял!
При замене declare -r
на readonly
ошибка больше не появляется.
Using the declare builtin restricts the scope of a variable.
http://tldp.org/LDP/abs/html/declareref.html
Вот как я это исправил:
### log.sh
readonly WARN=3
warn() {
echo "${WARN}: $@" >&2
}
Этот синтаксис PS1
специфичен для оболочки bash
.
Предположительно, этому новому пользователю была назначена другая оболочка входа.
Используйте chsh
, чтобы изменить оболочку входа в систему на/bin/bash
(и снова выйти из системы + войти в систему ), или адаптируйте этот синтаксис PS1
к оболочке входа пользователя.
ps
показывает, что речь идет о оболочке sh
. Я полагаю, что это оболочка по умолчанию, используемая любым приложением, которое вы использовали для создания этой учетной записи. /bin/sh
— единственная оболочка, которую вы обязательно найдете в любой системе, подобной Unix -, так что это разумное значение по умолчанию.