标签: which

如何更改 unix 可执行文件的默认版本?

我目前在我的 OSX 机器上安装了同一个可执行文件的两个版本:一个位于 usr/bin 中,另一个是 Macports 安装。当我运行时which,终端将位置返回到 usr/bin 版本。是否有统一的方法来更改默认安装,或者每个应用程序都有自己的命令选项吗?

unix which macos

6
推荐指数
1
解决办法
4071
查看次数

Linux:从指定的搜索路径中找到第一个结果

如果我有一个以冒号分隔的路径列表,很像 $PATH,但不一定是 $PATH。

我想在该列表中搜索特定文件名。但是,我只想要第一个匹配的路径。

我已经考虑过以下 linux 命令:

  • which: 仅适用于二进制文件,并且仅适用于 $PATH 变量
  • whereis: 适用于特定类型的文件,并且仅适用于 $PATH 变量
  • find: 不支持以冒号分隔的路径列表,并返回多个结果

以下是我尝试过的一些事情:

  1. 我尝试whereis通过以下策略使用

    env WHEREIS="`which whereis`" PATH="$MY_PATH_LIST" $WHEREIS "$TARGET_FILE"
    
    Run Code Online (Sandbox Code Playgroud)

    这几乎有效。但是,它似乎不会返回任意文件类型的结果。它还以笨拙的格式返回多个结果。

  2. 我可以which上班

    env WHICH="`which which`" PATH="$MY_PATH_LIST" $WHICH "$MY_TARGET_FILE"
    
    Run Code Online (Sandbox Code Playgroud)

    如果有一个命令行选项来强制它允许非可执行文件。

  3. 然后我尝试用find. 首先我使用正则表达式来扩展路径列表(我用空格替换冒号)。然后我调用find,它工作正常。但是,它会搜索所有路径。如果找到好的结果,我似乎无法找到一种方法来告诉它提前停止搜索。

    我确实得到了这个工作

     find ${MY_PATH_LIST//[:]/ } -name "$MY_TARGET_FILE" | head -n 1
    
    Run Code Online (Sandbox Code Playgroud)

    但需要很长时间才能完成,因为find仍在进行详尽的搜索。

    我需要它更快地执行(在第一个结果时退出),因为它将使用不同的参数运行多次。

有没有人有更好的解决方案建议?

请注意,如果一切都失败了,我可以编写一个非 bash 解决方案。现在写我希望使用现有工具有一个简单的解决方案。

linux command-line find which

6
推荐指数
1
解决办法
1925
查看次数

Bash 路径行为异常

我正在尝试从命令行运行openscad并抛出错误,但是如果我输入报告的整个路径,它似乎可以正常工作,如下所示。

[dataproc@Euclid ~]$ which openscad
/usr/bin/openscad
[dataproc@Euclid ~]$ openscad
bash: /usr/local/bin/openscad: No such file or directory
[dataproc@Euclid ~]$ /usr/bin/openscad
[dataproc@Euclid ~]$ #this worked
Run Code Online (Sandbox Code Playgroud)

我完全不知道这里发生了什么,任何帮助将不胜感激。

bash which

5
推荐指数
1
解决办法
78
查看次数

在zsh中为“which”绕过“noglob”?

我想使用“which”命令来查看实际调用的是哪个可执行文件,但是防御性的“noglob”别名一直在妨碍。是否有快捷方式可用于查找命令别名时调用的可执行文件?

我认为这应该与 shell 无关,但如果重要的话,我正在使用 zsh。

zsh alias which

5
推荐指数
1
解决办法
5278
查看次数

“哪个”程序需要刷新外壳才能查看新安装的程序?

为什么 Linux 程序which要求您刷新 shell(例如tcsh在终端中键入)以查看安装在您路径中的新程序??

我很困惑为什么我无法访问一个程序,该程序与 中的其他程序具有相同的权限usr/local/binwhich可以清楚地看到。

有人可以用外行的话向我解释这是如何工作的吗?

command-line which tcsh

3
推荐指数
1
解决办法
1300
查看次数

如何更改哪个命令的输出附带的路径?

当我which mex在linux系统上时,它给出了一条路径,但我想将此路径更改为另一个路径。如何将此默认路径设置为另一个位置?

linux path which

3
推荐指数
1
解决办法
2864
查看次数

如何执行具有相同名称的不同命令?

我的电脑上有两个单独的文件,

which execfile
/usr/local/bin/
/usr/bin/
Run Code Online (Sandbox Code Playgroud)

所以,我在两个不同的目录中有两个同名的文件。如何准确指定要运行的命令?

linux unix which ubuntu

2
推荐指数
1
解决办法
4413
查看次数

标签 统计

which ×7

linux ×3

command-line ×2

unix ×2

alias ×1

bash ×1

find ×1

macos ×1

path ×1

tcsh ×1

ubuntu ×1

zsh ×1