如何在 /bin/sh 中强制执行特定版本的命令

How to force specific version of command in /bin/sh

运行wine-1.8.2/configure时报flex版本太旧:

configure: error: Your flex version is too old. Please install flex version 2.5.33 or newer

wine-1.8.2/配置:

#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for Wine 1.8.2.
...

我在本地安装了flex-2.6.0并在.cshrc中设置了别名:

alias flex /user/user_name/TOOLS/flex-2.6.0/bin/flex

但是配置还是报同样的错误信息。

我把FLEX=$ac_cv_prog_FLEX改成FLEX=/user/user_name/TOOLS/flex-2.6.0/bin/flex后,就不再报flex老版本警告了。

我想知道如何在脚本中强制指定。谢谢!

您应该将安装新版本 flex 命令的目录添加到 PATH 环境变量中。确保此目录出现在包含旧版本的目录之前,以便这是找到的第一个版本。

.cshrc 中设置别名仅适用于您的交互式 C shell。它不会对用于解释 configure 脚本的非交互式 Bourne-like shell (/bin/sh) 产生任何影响。我不使用 C shell 但你可以在你的 .login 启动文件中包含如下内容:

setenv PATH "/user/user_name/TOOLS/flex-2.6.0/bin/flex:$PATH"

如果您的 OS 使用 Bourne 风格 .profile 来自定义您的环境,您需要使用类似 Bourne 的语法更新该文件 shell:

export PATH="/user/user_name/TOOLS/flex-2.6.0/bin/flex:$PATH"