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

ero*_*gol 3 linux path which

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

Dan*_*son 5

在某个系统上我得到以下输出:

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Run Code Online (Sandbox Code Playgroud)

这意味着执行命令后

$ foo
Run Code Online (Sandbox Code Playgroud)

shell 将按以下顺序查找可执行文件:

  1. /usr/local/bin/foo
  2. /usr/bin/foo
  3. /bin/foo
  4. /usr/local/games/foo
  5. /usr/games/foo

并运行遇到的第一个。

which foo将返回第一个匹配的路径,或者如果目录foo中不存在名为的可执行文件,则不返回任何内容PATH(请注意,which -a开关将按顺序返回所有匹配,而不仅仅是第一个)。

例如,您可以重新排序变量中的目录PATH以更改查找顺序,但这可能不是您“真正”问题的解决方案。如果您在较高优先级目录中有一个可执行文件“隐藏”所需的文件,则可以将第一个文件移走,或者仅使用其完整路径执行较低优先级的文件。


我认为mex这是 Matlab 安装的一部分。尝试猜测您想要做什么,也许您可​​以暂时修改PATH单个正在运行的进程,如下所示:

$ PATH=/home/user/myownexecs:$PATH matlab
Run Code Online (Sandbox Code Playgroud)

其中/home/user/myownexecs/mexmex您想要优先的可执行文件。这将暂时修改PATH进程的变量matlab,但不会以持久的方式干扰系统。

不过,您应该澄清您的问题,询问您真正想做什么,以获得更合适的答案。