Я пытаюсь запустить следующую команду:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Но получаю:
Illegal variable name.
Как это исправить?
Попробуйте использовать одинарные кавычки вместо двойных кавычек вокруг выражения.
Я не думаю, что (t)csh поддерживает $().
Во FreeBSD sh не является bash, и bash не установлен по умолчанию, но вы пометили его как bash. Вы действительно используете bash?
Вы явно используете sh здесь; почему это помечено csh?
Сначала никогда не запускайте скрипт, загруженный таким образом. Вы никогда не знаете, что он будет выполнять в вашей системе.
curl -O https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh
bash install.sh
Я проверил этот код сценария установки, и он не проходит статический анализ shellcheck.net. Так что у его авторов больше домашней работы.
Фактическая проблема, с которой столкнулся автор, заключается в том, что tcsh не знает о "$(...)", и это интерпретируется как (недопустимая) переменная, поскольку они используют двойные кавычки. Замена на ' должна исправить это. Просто к вашему сведению.
@MartinTournoij У меня такое ощущение, что замена $(command) на обратную кавычку может не сильно помочь, так как для запуска всего сценария установки требуется оболочка POSIX.
@MartinTournoij нет, это не работает с '
Проверьте оболочку, установленную по умолчанию в вашей FreeBSD:
root@freebsd-13:~ # echo "$SHELL"
/bin/csh
Если это csh (оболочка C), переменные должны быть установлены так:
root@freebsd-13:~ # set test=`echo "hello"`
root@freebsd-13:~ # echo "$test"
hello
Следующий пример не будет работать:
root@freebsd-13:~ # set test = "$(echo "hello")"
Illegal variable name.
Но вы можете установить его с помощью sh следующим образом:
root@freebsd-13:~ # sh
# test = "$(echo "hello")"
# echo $test
hello
#
Кажется, он отлично работает под Ubuntu 20 (под WSL). Убедитесь, что sh работает с правильной оболочкой. FreeBSD не использует bash по умолчанию. «Недопустимое имя переменной» — распространенная ошибка csh для таких вещей, как $?.