我花了几个小时试图让下面的代码工作
PATH="C:\Ben\MyPictures"
echo $PATH
MY=`expr 2 + 2`
但这不会起作用,因为“expr: command not found”。我在 StackOverflow 上唯一发现的是路径问题(即设置我的环境变量),但如果这是问题所在,为什么其他函数(如 echo、let 和 declare)已经可以正常工作了?
有关更多上下文,这是在几乎全新安装的窗口的 cygwin 上。我的问题是为什么我找不到 expr?
最佳答案
您已将PATH
修改为只有1 个目录(因此找不到expr
)。您必须将新路径附加到 PATH
而不是替换现有的 PATH
值,如下所示:
export PATH="$PATH:C:\Ben\MyPictures"
除了调用外部进程 expr
进行计算之外,您还可以使用 bash 的内置算术计算:
$ echo $((2+2))
4
编辑:
是的,它们可以工作,因为它们不是可执行文件,是从 $PATH
中列出的目录中找到的。
相反,它们(echo
、type
等)是由 bash
shell 本身提供的功能,称为 shell 内置函数。
输入 type echo
和 type expr
来知道它是什么类型的命令(别名/shell 内置/可执行文件等)
通常可以通过 help shellBuiltin
找到 Shell 内置帮助,因为我们使用 man
页面来获取可执行文件。
PS:type
本身是一个内置的shell(参见type类型
)
关于bash - 未找到 expr 命令?为什么没有找到 expr 而其他的都找到了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37269832/