我想使用which
系统的默认路径,忽略用户 shell 配置文件中的任何修饰。
我正在尝试编写一个脚本来查找系统的 Ruby 二进制文件。许多 Ruby 开发人员使用 Ruby 版本管理器,它会~/.rvm/bin
在他们的$PATH
. 我想绕过这个并使用系统附带的 Ruby 版本,或者是通过系统的包管理器安装的。
这是我迄今为止尝试过的:
$ env -i sh -c "which ruby"
Run Code Online (Sandbox Code Playgroud)
这没有输出,并以 1 退出。我希望它可以工作,因为路径包含/usr/bin
,并且我的系统附带了一个 Ruby 二进制文件/usr/bin/ruby
:
$ env -i sh -c "echo \$PATH"
/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:.
$ which -a ruby
# ...
/usr/bin/ruby
Run Code Online (Sandbox Code Playgroud)
一些额外的细节:
env -s bash -c "which ruby"
也没有找到任何东西。env -i zsh -c "which ruby"
确实找到了/usr/bin/ruby
,但我不能依赖zsh
.which
(以确保我使用的是二进制文件,而不是内置的 shell)没有任何区别。我在 OS X …