.bash_profileのエイリアスはシステム全体に反映されません。

.bash_profileのエイリアスはシステム全体に反映されません。

.bash_profileにはパス設定とエイリアスがほとんどなく、エクスポート中です。

たとえば、

alias gcc=/abc/def/......./myrtgcc
export gcc

使いたいミルトgccgcc次のコマンドを使用して、システムを実行したい端末またはEclipseでCプログラムをコンパイルしますmyrtgcc somfile.c -o output

しかし、これは事実ではありません。上記のエイリアスを追加し.bash_profileてシステムを再起動しても(またはを使用してsource .bash_profile)変更は反映されません。端末を開き、と入力するとが表示され、which gcceclipse/usr/bin/gccが「GCC」コマンドを使用すると、同じコマンドが再び呼び出されます/usr/bin/gcc

どうやって作りますか?ミルトgccコマンドで使用されるシステムデフォルト湾岸協力協議会

答え1

あなたはいくつかのことについて混乱しています。

  1. whichエイリアスは反映されません。したがって、whichエイリアスが作成されたことを確認しようとするときに使用することは役に立ちません。alias代わりに引数なしで実行すると、有効なエイリアスがすべて表示されます。例:

    anthony@Zia:~$ foo
    bash: foo: command not found
    anthony@Zia:~ [$?=127]$ alias foo='echo hi'
    anthony@Zia:~$ foo
    hi
    anthony@Zia:~$ which foo
    anthony@Zia:~ [$?=1]$
    
  2. エイリアスは他のものに影響を与えず、シェルにのみ影響します。 .dllを実行しようとすると、シェルエイリアスは重要ではありませんmake。エイリアスではない変数のみをエクスポートすることもできます。これはPerlを実行したい例です(再びfooエイリアスを使用します)。eclipsegcc

    anthony@Zia:~$ perl -Mautodie=system -E 'system("foo")'
    "foo" failed to start: "No such file or directory" at (eval 6) line 12.
    at -e line 1
    
  3. コンパイルするほとんどのタスクは代わりに実行などをcc実行します。したがって、書き換えても動作しない可能性があります。c++gccgcc

それでは、これを達成する方法は何ですか?

make最善の方法は、使用するコンパイラを教えることです。

make CC=/path/to/myrtgcc target

/.configureautoconfを使用するプログラムを実行するときに環境に渡すこともできます。

2番目の方法は、(たとえば)などの名前の単純なシェルスクリプトを生成してgccパスの最初の場所に配置することです。スクリプトは次のとおりです。cc~/bin

#!/bin/sh
exec /path/to/myrtgcc "$@"

PATHでは、次のものを使用して最初に配置できます.bashrc

PATH="$HOME/bin:$PATH"
export PATH

答え2

シェルのドキュメントをお読みください。構成ファイルには2種類あります。 .bash_profileはすでにログインしており、一部の操作(新しい端末を開くなど)を実行すると実行されます。別の種類のプロファイルはシステムに初めてログインするときに使用されます。奇妙なことに、これをログインプロファイルと呼びます。必要なタスクを実行するには、.profileに内容を入れてください。

関連情報