“which”命令在标准输出上未显示任何内容

“which”命令在标准输出上未显示任何内容

当我运行which命令时它什么也没有显示。

我运行了所有这些,但没有任何输出。

$ which /tool/
$ which RED*.pdf
$ which anime
$ which -a anime
$ info which    
$ which -a
$ which -a Downloads
$ which Downloads
$ which doc    
$ which media
$ which /media
$ which    

$ su -
# which
# which doc
# logout

$ which --help
Illegal option --
Usage: fusrfbinfwhich [-a] args
$ which info
/usr/bin/info
$ which help
$ which cd
$ info which
$ which -a info
/usr/bin/info
$ which -a
$ which -a list.txt

答案1

man which

NAME
       which - locate a command

SYNOPSIS
       which [-a] filename ...

DESCRIPTION
       which returns the pathnames of the files (or links) which would be executed
       in the current environment, had its arguments been given as commands in a
       strictly POSIX-conformant shell. It does this by searching the PATH for
       executable files matching the names of the  arguments. It does not follow
       symbolic links.

我不会期望which给出任何输出 - 正如man页面所述,您需要一个作为命令的文件名。

尝试运行which ls

你可能想知道在哪里命令是-为此你需要whereis。

$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz

答案2

就我而言,myscript.sh购买工作正常which(也没有whereis)没有返回任何输出:

$ which myscript.sh
$ 

来自which手册:

描述
which 返回将在当前环境中执行的文件(或链接)的路径名,其参数作为严格符合 POSIX 的 shell 中的命令给出。 它通过在 PATH 中搜索与参数名称匹配的可执行文件来实现此目的。它没有规范化路径名。

我修复了这个问题,将~(波浪号)改为$HOMEon $PATH

export PATH="$PATH:$HOME/myprgms"

现在还whereis -l显示我添加的文件夹。

这个答案了解有关~和之间区别的更多信息$HOME

答案3

一个好的开始是:

man which

NAME
   which - shows the full path of (shell) commands.

您的屏幕截图中提供的示例均不是可以返回路径的命令。例如,cd 是内置命令。

我不明白你期望得到什么

which /tool/

ETC。

,但看起来这并不是能达到您期望结果的工具。

答案4

有几个类似的命令,它们的方法和输出却截然不同:

/usr/bin/which 找到可执行文件的二进制路径。

$ which ssh /usr/bin/ssh

/usr/bin/whereis在标准 Linux 位置中搜索指定名称的源代码、二进制文件和手册。

$ whereis ssh /usr/bin/ssh

/usr/bin/find递归搜索当前或指定路径以查找匹配的字符串。

(cd /usr/bin && find . ssh) ... ./things_it_checked ... ssh

/usr/bin/grep 在文本/文件/路径中搜索字符串。

(cd /usr/bin && ls * | grep ssh) ssh ssh-add ssh-agent ssh-keygen ssh-keyscan

相关内容