在 Linux 中,我们有“which”命令来找出可执行文件的路径。
它的 Windows 等价物是什么?是否有任何 PowerShell 命令可以执行此操作?
PowerShell 是否具有与which
大多数(如果不是全部)Unix shell 中的命令等效的命令?
有很多次我想知道我从命令行运行的东西的位置。在 Unix 中,我只做which <command>
,它告诉我。我在 PowerShell 中找不到等效项。
我有默认的 OpenSSL 9.8 (Mac OS X 10.6.8) 并决定通过 MacPorts ( sudo port install openssl
)安装最新版本 (1.0.1 )。
这些是which和whereis命令的控制台输出:
$ whereis openssl
/usr/bin/openssl
Run Code Online (Sandbox Code Playgroud)
(这是默认系统的一个)
$which openssl
/opt/local/bin/openssl
Run Code Online (Sandbox Code Playgroud)
(这是通过 MacPorts 安装的)
$ openssl version
OpenSSL 1.0.1c 10 May 2012
Run Code Online (Sandbox Code Playgroud)
(PATH中有mac端口的版本)
为什么为whereis
and返回了不同的路径which
,这可以吗?有什么办法可以得到相同的结果吗?
Linuxlocate
和which
在 Linux 中有什么区别?
为什么当我使用locate mentor
它时会列出所有导师,但当我使用which mentor
它时说“没有导师......” - 这是什么意思?
可能的重复:
Windows 相当于 whereis?
对于 Linux/Mac,我可以which
用来定位文件。这个命令行工具相当于什么which
?
有没有办法快速确定二进制文件(%PATH%
变量指向的)的位置。
这相当于which perl
在传统的 unix shell 中执行的操作。
我知道资源工具包有一个where
命令,但是我的(公司)计算机上没有安装这个工具包,所以我不能使用where
.
POSIX shell 标准在这个站点上说
http://pubs.opengroup.org/onlinepubs/9699919799/
关于 shell 如何PATH
用于查找可执行文件:
“应从头到尾搜索列表,将文件名应用于每个前缀,直到找到具有指定名称和适当执行权限的可执行文件。”
好吧,这不是在真正的 POSIX 实现中的工作方式:
man which
说:
“返回将在当前环境中执行的文件(或链接)的路径名,其参数在严格符合 POSIX 的 shell 中作为命令给出。它通过在 PATH 中搜索与名称匹配的可执行文件来实现参数。它不遵循符号链接。”
好,我们来看看这个情况:
$ pwd
/home/mark
$ echo $PATH
/home/mark/bin:
...
$ ls -l bin/foobar
lrwxrwxrwx 1 mark mark 18 Dec 12 22:51 bin/foobar -> /home/mark/foobar1
$ touch foobar1
$ which foobar
$ chmod a+x foobar1
$ which foobar
/home/mark/bin/foobar
Run Code Online (Sandbox Code Playgroud)
好的,这里有一个PATH
正确名称的符号链接,它被报告ls
为可执行。
which
根本不看它,而只对它指向的东西感兴趣。
尽管事实上两者都man which
明确表示它不遵循符号链接(实际上我们看到它没有,因为which foobar
不打印foobar1
),而且上面引用的 POSIX shell 文档从未提到 …
我在很多地方都有一些程序(它是java
命令)。我从 CMD 开始这个命令。问题是,我需要确切地知道java
正在运行的命令的路径..
(如果您了解 unix,我需要一个诸如 的命令which
)。
谢谢。
我想使用ports提供的python24,所以安装了,python_select -s
显示确实选择了我想要的版本。跑步which python
给了/opt/local/bin/python
,跑步/opt/local/bin/python
给了我想要的版本。但是,当我python
从 shell运行时,我得到的是/usr/bin/python
版本。我没有 python 别名。
简而言之,情况如下:
which python
似乎证实了这一点。alias
只返回 1 个条目,这与此无关。然而,python
从 bash shell运行给了我错误的 python!
我有点难住了!我在看什么?