web-dev-qa-db-ja.com

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

g++/usr/local/bin/に2つの/usr/bin/プログラムがあります。

デフォルトのg++/usr/local/bin/に含めたいです。ただし、他のプログラムのために、PATH環境変数を変更したくありません。 /usr/bin/のバージョンより/usr/local/bin/のバージョンのほうがいいと思います。これは可能ですか?

私のポイントを明確にするために:

私の2つのプログラムのデフォルトを次のようにしたい:

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

しかし、/usr/local/bin//usr/bin/には両方のプログラムが存在します。どうすればよいですか?

7
user40780

オプション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が適切に供給されると(ログアウトしてから再度ログインすると)、すべてが正しいpythonと正しいg++を見つけるはずです。

オプション2:bashが従うにはaliasを使用

より軽量なソリューションを探している場合、そしてpython bashから直接)のみを呼び出すの場合、~/.bashrcaliasを設定できます。

alias python=/usr/bin/python

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

または、常に/usr/local/bin/pythonの名前を/usr/local/bin/python-alternateなどに変更することもできます。少なくともパッケージマネージャによって制御されるDebianでは、/usr/binで名前を変更することはお勧めしません。通常/usr/local/binはそうではありません。

オプション4:Makefileで正しいコンパイラを指定

ワークフローでmake、またはmakeを呼び出すより広範なアプリケーション(autotoolscmakeなど)を使用している場合、ほとんどの場合、コンパイラーを指定するオプションがあります。たとえば、メイクファイルは次のようになります。

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

all:
    $(CXX) inputfile.cpp -o outputfile

またはcmakeを使用すると、

cmake -D CMAKE_CXX_COMPILER=/usr/local/bin/g++ ..

プログラムが異なればコンパイラを指定するための構文も異なりますが、ほとんどの場合は指定できます。

11
rexroni