当前位置: 首页 > 知识库问答 >
问题:

envsubst:在Mac OS X 10.8上找不到命令

翁和正
2023-03-14

当我尝试运行包含envsubs命令的脚本时,会出现此错误。从网上看,这似乎是一个标准的bash命令,所以我不确定要安装什么才能让它正常工作。

共有3个答案

秦楚
2023-03-14

为了消除潜在的混淆:

  • envsubst是一个外部可执行文件,因此不是Bash的一部分;外部可执行文件依赖于平台,无论是在哪些可用以及它们的特定行为和它们支持的特定选项方面(尽管希望有一个基于POSIX规范的通用子集)
  • 直接内置在bash中的命令称为内置命令,只有它们才能在所有平台上存在。

要测试给定命令是否是内置命令,请使用

type <cmdName>

在本例中,在macOS 10.13上运行类型envsubt将返回bash:type:envsubt:not found,从中可以推断:

  • envsubst不是内置的
  • envsubst不在系统的$路径中(因此可能不在系统中)

(相比之下,在Ubuntu 12.04系统上运行相同的on命令时,返回的envsubt是散列的(/usr/bin/envsubt),它告诉您该实用程序存在以及它所在的位置。)

envsubt的一种临时替代方法是使用eval,尽管通常的警告适用:仅在您控制或信任其内容的字符串上使用eval:

假设一个样本。包含未展开变量引用的文本的txt文件;例如。:

cat > sample.txt <<'EOF'
Honey, I'm $USER
and I'm $HOME.
EOF

相当于:

envsubst < sample.txt

是:

eval "echo \"$(sed 's/"/\\"/g' sample.txt)\""

然而,有一个至关重要的区别:

  • envsubst仅扩展环境变量引用
胡鸿禧
2023-03-14

编辑:@cobberboy的anwer更正确。投票给他。

brew install gettext
brew link --force gettext 

以下是我以前的答案:

envsubst包含在gettext包中。

因此,您可以使用标准构建工具(如make或使用homebrew自行编译。

然而,在MacOS中安装gettext时,它似乎没有什么问题。有关详细信息,请参阅以下url:如何在MacOS X上安装gettext

钱哲茂
2023-03-14
brew install gettext
brew link --force gettext 

这将在OS X上启用envsubst,并强制其正确链接。它需要安装自制软件。

 类似资料:
  • 问题内容: 在Oracle Enterprise Linux中,当我输入时 我已经安装了Java 1.6,并且具有以下功能 我该如何解决这个问题? 谢谢 问题答案: 您可以使用以下命令将Java路径之一添加到PATH变量。 您可以将此行添加到主目录中的.bashrc文件中。将此添加到.bashrc中将确保每次打开bash时都会更新PATH变量。

  • 2)使用返回google-cloud-sdk中的64bit版本的SDK... 3)我已经重新启动了终端,并从google-cloud-sdk内部运行。这将返回“”。如果我运行,我将看到以下目录结构: 4)我也尝试在内运行,但是遇到了同样的问题,。 谢谢

  • 问题内容: 我有一个docker撰写文件 而且我已经配置了詹金斯工作以通过调用另一个外壳文件“ environment.sh”来执行此文件,但是它尝试执行以下错误: 我如何在jenkins服务器中下载和配置docker-compose,也没有可用的插件!,适用于docker-compose 问题答案: $ PATH环境变量中可能不存在您。 首先,您应该删除所有冲突的内容- 在大多数Linux系统上

  • 在运行命令之后,我尝试运行命令,然后运行命令 ` 有人帮忙吗?

  • 我有一个网络钩子齿轮为我的不和谐机器人。我想让embarss命令(在webhook cog中)触发一个webhook,创建时使用用户名和pfp,这很好。然而,我也希望这个命令能够被设置到一个特定的用户身上,这就是问题所在。当我尝试将成员参数添加到embarrass函数中时,它看起来像:async def embarrass(self、ctx、member:discord.member),但不起作用