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

Xod*_*rap 14 shell bash path

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

$ assemble.sh file
... [output]
Run Code Online (Sandbox Code Playgroud)

但是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:.
Run Code Online (Sandbox Code Playgroud)
  1. 这怎么可能?
  2. 我怎样才能找到这个文件在哪里?

我正在使用 bash。

gle*_*man 18

使用这个命令: type assemble.sh

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

  • 或者只是 `type assemble.sh`,它是可移植的(并且只显示第一个匹配项,而 `type -a` 是一个 ksh/bash 结构来显示所有匹配项)。 (9认同)

use*_*own 7

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

find ${PATH//:/ } -maxdepth 1 -name assemble.sh -print -quit
Run Code Online (Sandbox Code Playgroud)

type 当然更容易。

  • 这是相当有用的。我不知道我可以将 $PATH 拆分为它的子组件并使用 `find` 搜索每个子组件 (2认同)
  • 没有尝试,但我想这可能会打破 PATH 组件中的空格 (2认同)