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

时间:2016-04-13 14:46:39

标签: shell sh flex-lexer

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

  

configure:error:你的flex版本太旧了。请安装flex   版本2.5.33或更新版

酒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

但是configure仍会报告相同的错误消息。

我将FLEX=$ac_cv_prog_FLEX更改为FLEX=/user/user_name/TOOLS/flex-2.6.0/bin/flex后,会停止报告flex旧版本警告。

我想知道如何强制脚本中的特定内容。谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

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

如果您的操作系统使用Bourne样式.profile来自定义您的环境,则需要使用类似Bourne的shell的语法更新该文件:

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