【问题标题】:freebsd: Illegal variable namefreebsd:非法变量名
【发布时间】:2021-03-30 10:43:36
【问题描述】:

我正在尝试运行以下命令:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

但得到:

Illegal variable name.

如何解决?

【问题讨论】:

  • 在 Ubuntu 20 下(在 WSL 下)似乎可以正常工作。确保 sh 正在运行正确的 shell。 FreeBSD 默认不使用bash。 “非法变量名”是csh 之类的常见错误$?
  • 尝试在表达式周围使用单引号而不是双引号。
  • 我认为 (t)csh 不支持$()
  • 在 FreeBSD 中,sh 不是 bash,默认情况下也没有安装 bash,但您将其标记为 bash。你真的在运行 bash 吗?

标签: curl freebsd csh


【解决方案1】:

首先不要运行这样下载的脚本。你永远不知道它会在你的系统上执行什么。

  • 首先下载脚本:
    curl -O https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh
  • 然后使用 ksh 或 bash 运行脚本:
    bash install.sh

我检查了这个安装脚本代码,它没有通过 shellcheck.net 静态分析。所以它的作者有更多的功课要做。

【讨论】:

  • 作者遇到的实际问题是 tcsh 不知道"$(...)",并且这被解释为(无效)变量,因为它们使用双引号。用' 替换它应该可以解决它。仅供参考。
  • @MartinTournoij 我觉得用反引号替换 $(command) 可能没有多大帮助,因为整个安装程序脚本需要 POSIX shell 才能运行。
  • @MartinTournoij 不,它不适用于'
猜你喜欢
  • 2012-11-21
  • 1970-01-01
  • 1970-01-01
  • 2013-01-06
  • 2018-05-21
  • 2011-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多