当我运行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 中搜索与参数名称匹配的可执行文件来实现此目的。它没有规范化路径名。
我修复了这个问题,将~
(波浪号)改为$HOME
on $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