我(以某种方式)能够运行脚本:
$ 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:.
- 这怎么可能?
- 我怎样才能找到这个文件在哪里?
我正在使用 bash。
答案1
使用这个命令: type assemble.sh
它适用于各种 shell,并且仅显示第一个结果。
答案2
或者分割路径,并在查找中使用它 - 第一个匹配应该是解决方案
find ${PATH//:/ } -maxdepth 1 -name assemble.sh -print -quit
type
当然更容易。
答案3
您可能使用的是 bash,但输出的语法which
显示您使用的是旧的which
csh 编写的语法。 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
来查找文件的位置。