パスを変更せずに特定のプログラムのデフォルトディレクトリを変更します。

パスを変更せずに特定のプログラムのデフォルトディレクトリを変更します。

g++次の場所に2つのプログラムがあります/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

適切なプログラムを指す2つのシンボリックリンクを配置します。

ln -s /usr/bin/python /home/username/.bin/python
ln -s /usr/local/bin/g++ /home/username/.bin/g++

これを行うには、ソースが正しい場合(ログアウトしてから再度ログイン)、すべてが戻って来る~/.bashrc方法を見つける必要があります。pythong++

オプション2:aliasbashに使用して従う

より軽い解決策をお探しの場合bashから直接Pythonを呼び出します。alias、以下で設定できます~/.bashrc

alias python=/usr/bin/python

pythonオプション3:/usr/local/bin/で名前を変更するだけです。

/usr/local/bin/pythonまたは、自分の名前を次のように変更することもできます/usr/local/bin/python-alternate/usr/bin少なくともDebianでは、パッケージマネージャは名前を制御するため、埋め込みコンテンツの名前を変更することはお勧めできません。一般的に/usr/local/binそうではありません。

オプション4:Makefileに正しいコンパイラーを割り当てる

ワークフローでを使用する場合make、またはより広いアプリケーションmakeautotoolsまたは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 

関連情報