更改一个特定程序的默认目录而不更改其路径

use*_*780 7 linux path

我有两个g++程序位于/usr/local/bin//usr/bin/

我希望默认g++/usr/local/bin/. 但是,我不想更改我的 PATH 环境变量,因为对于其他程序。我更喜欢 in 中的版本而/usr/bin/不是/usr/local/bin/. 这可能吗?

为了明确我的观点:

我希望我的两个程序的默认值是:

g++/usr/local/bin/
python/usr/bin/

但是在/usr/local/bin/and 中/usr/bin/,两个程序都存在,我该怎么办?

rex*_*oni 11

选项 1:在您的路径上创建一个覆盖文件夹

如果您需要以间接方式调用这些程序(例如由窗口管理器启动的某些应用程序将调用g++python),您应该编辑您的路径。您可以简单地在您的路径的开头添加一个新文件夹~/.bashrc

export PATH=/home/username/.bin:$PATH
Run Code Online (Sandbox Code Playgroud)

并放置两个符号链接以指向适当的程序:

ln -s /usr/bin/python /home/username/.bin/python
ln -s /usr/local/bin/g++ /home/username/.bin/g++
Run Code Online (Sandbox Code Playgroud)

这样,一旦您~/.bashrc的来源正确(注销,然后重新登录),一切都应该找到正确的python和正确的g++.

选项 2:使用aliasfor bash 跟随

如果您正在寻找更轻量级的解决方案,并且您只直接从 bash 调用 python,您可以alias在您的~/.bashrc

alias python=/usr/bin/python
Run Code Online (Sandbox Code Playgroud)

选项 3:只需更改python/usr/local/bin/ 中的名称

或者你总是可以重命名/usr/local/bin/python/usr/local/bin/python-alternate或什么的。我不建议在 中重命名东西/usr/bin,因为至少在由包管理器控制的 Debian 中。通常/usr/local/bin不是。

选项 4:在 Makefile 中指定正确的编译器

如果您的工作流使用make,或者一些更广泛的应用程序调用make(例如autotoolscmake),几乎总是有一个选项来指定您的编译器。例如,您的 makefile 可能如下所示:

CXX=/usr/local/bin/g++

all:
    $(CXX) inputfile.cpp -o outputfile
Run Code Online (Sandbox Code Playgroud)

或者cmake你可能会配置

cmake -D CMAKE_CXX_COMPILER=/usr/local/bin/g++ ..
Run Code Online (Sandbox Code Playgroud)

不同的程序将有不同的语法来指定编译器,但您总是可以指定它。