在路径中查找没有“which”的文件?

在路径中查找没有“which”的文件?

我(以某种方式)能够运行脚本:

$ assemble.sh file
... [output]

which找不到它:

$ which assemble.sh
which: no assemble.sh in (/s/std/bin:/usr/afsws/bin:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/ucb:/bin:/usr/bin:/usr/stat/bin:/usr/X11R6/bin:.
  1. 这怎么可能?
  2. 我怎样才能找到这个文件在哪里?

我正在使用 bash。

答案1

使用这个命令: type assemble.sh

它适用于各种 shell,并且仅显示第一个结果。

答案2

或者分割路径,并在查找中使用它 - 第一个匹配应该是解决方案

find ${PATH//:/ } -maxdepth 1 -name assemble.sh -print -quit

type当然更容易。

答案3

您可能使用的是 bash,但输出的语法which显示您使用的是旧的whichcsh 编写的语法。 PATH 显示在括号中,并且 PATH 中的目录具有类似 和 的条目/opt/SUNWspro/bin/usr/ccs/bin这些条目仅在 Solaris 中有意义。这是一致的:Solaris 使用 csh which

我的猜测是:您有一个用于 bash 的路径,另一个用于 csh 的路径。这可能是系统问题。我记得,Solaris 保留 /etc/profile 和 /etc/cshrc 文件用于系统范围的 PATH 设置。这两个初始化文件可能会为不同的 shell 设置不同的 PATH 变量。在 bash 下执行“echo $PATH”,看看它是否与命令which打印的 PATH 字符串一致。

答案4

您可以使用locate assemble.sh来查找文件的位置。

相关内容