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

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

我有两个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:使用aliasfor 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(例如autotoolscmake),则几乎总是有一个选项来指定您的编译器。例如,您的 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 

相关内容