Bash Mac Shell.sh命令不可能

Bash Mac Shell.sh命令不可能,bash,macos,shell,sh,Bash,Macos,Shell,Sh,是否可以在Mac上的.sh Shell脚本中执行where 如果在终端中执行where,则命令存在并起作用 如果在.sh文件中执行where,则会出现错误:/TestInternal.sh:line 16:where:command not found 我如何修复/理解?我发现where是的扩展版本,其中。如果我在.sh脚本中使用,它会工作 来源:其中为zsh ism。改为使用什么取决于脚本使用的shell。是否为#/bin/sh#/usr/bin/env bash?还有别的吗?(顺便说一句,.

是否可以在Mac上的.sh Shell脚本中执行
where

如果在终端中执行
where
,则命令存在并起作用

如果在.sh文件中执行
where
,则会出现错误:
/TestInternal.sh:line 16:where:command not found


我如何修复/理解?

我发现
where
的扩展版本,其中
。如果我在.sh脚本中使用
,它会工作


来源:

其中
为zsh ism。改为使用什么取决于脚本使用的shell。是否为
#/bin/sh
<代码>#/usr/bin/env bash
?还有别的吗?(顺便说一句,
.sh
并不是一种特别有用的文件类型描述——不幸的是,许多人将
.sh
作为所有脚本的扩展,不管解释器是什么;因此,
.sh
扩展不仅可以在POSIX sh脚本上找到,还可以在bash脚本、zsh脚本、ksh脚本和许多其他脚本上找到;没有k如果您只有文件扩展名,则不知道将使用什么解释器:您需要检查shebang行)NO.
,它是一个外部命令,而不是shell内置命令。它无法访问shell的一组定义函数、别名、路径缓存等,而且运行速度也很慢(因为它需要启动一个单独的可执行文件)。如果您的shell是
bash
,您可能需要
type
,或者如果它是
sh
,您可能需要
command-v
,这几乎总是错误的。那么基思的答案似乎可以改进。基思的答案确实讨论了
type-a
,并将其描述为“bash等价物”。我试过在th.sh脚本中使用
type
,但似乎不起作用。可能
type
的语法与
which
的语法不同。再说一次:您的shell使用哪种解释器?不知道它是哪种脚本,我无法告诉您正确的用法(你说得对,
type
确实有语法,而
没有语法)。