我有两个g++
程序位于/usr/local/bin/
和/usr/bin/
我希望默认g++
为/usr/local/bin/
.但是,我不想更改我的 PATH 环境变量,因为对于其他程序来说。我更喜欢 中的版本/usr/bin/
而不是 中的版本/usr/local/bin/
。这可能吗?
为了明确我的观点:
我希望我的两个程序的默认设置是:
g++
在/usr/local/bin/
python
在/usr/bin/
但是在/usr/local/bin/
和 中/usr/bin/
,两个程序都存在,我该怎么办?
答案1
选项 1:在路径上创建覆盖文件夹
如果您需要以间接方式调用这些程序(例如,由窗口管理器启动的某些应用程序将调用g++
或python
),您应该编辑您的路径。您可以简单地将一个新文件夹添加到您的路径的开头~/.bashrc
:
export PATH=/home/username/.bin:$PATH
并放置两个符号链接以指向适当的程序:
ln -s /usr/bin/python /home/username/.bin/python
ln -s /usr/local/bin/g++ /home/username/.bin/g++
这样,一旦您的~/.bashrc
来源正确(注销,然后重新登录),一切都应该找到正确的python
和正确的g++
。
选项 2:使用alias
for bash 来跟随
如果您正在寻找重量更轻的解决方案,并且如果您只从 bash 直接调用 pythonalias
,您可以在您的 中设置~/.bashrc
:
alias python=/usr/bin/python
python
选项 3:只需更改/usr/local/bin/ 中的名称
或者你也可以直接重命名/usr/local/bin/python
为 be 之/usr/local/bin/python-alternate
类的。我不建议重命名 中的内容/usr/bin
,因为至少在 Debian 中是由包管理器控制的。通常/usr/local/bin
不是。
选项 4:在 Makefile 中指定正确的编译器
如果您的工作流程使用make
,或调用某些更广泛的应用程序make
(例如autotools
或cmake
),则几乎总是有一个选项来指定您的编译器。例如,您的 makefile 可能如下所示:
CXX=/usr/local/bin/g++
all:
$(CXX) inputfile.cpp -o outputfile
或者cmake
你可以配置
cmake -D CMAKE_CXX_COMPILER=/usr/local/bin/g++ ..
不同的程序将使用不同的语法来指定编译器,但您通常可以指定它。
答案2
如果您想更改单个命令的默认可执行文件,而不覆盖其他命令的默认路径,那么不出口更新的 PATH,而是在特定命令的开头设置 PATH。
例如:
# GNU/Linux install binary is the default executable
which install
/usr/bin/install
# Set AWS-CLI install binary for this command only
PATH="/home/username/aws-cli/bin:$PATH" which install
/home/username/aws-cli/bin/install