xChar
·a year ago

其实是这样的

  1. which 作为 shell 的外部命令,是没法获取到 shell 的 alias、function以及一众 shell 的变量的。外部命令能拿到的仅仅有 export 出来的环境变量。
  2. 其实上文里面的 ?? 本体是可以通过 type "??" 来获得的,type 是 shell 里面的builtin 命令
  3. 注意要有双引号,不然 ?? 作为参数是会被扩展的。而 ?? 则是 zsh 的 expand 机制,没有用双引号的话,则会被扩展成你上文所说的内容。( bash 不会,所以这里限定词不能是说 shell )
·a year ago

抱歉,更正一下,在 zsh 里面 which 是 builtin ,不过在 bash 则不是。所以在 zsh 里面 which 是可以识别 "??" 的, 而 bash 里面使用 which 则不行。Anyway,在这种情况下。推荐用更兼容的 type 命令。

Loading comments...