
.bash_profile にはパス設定とエイリアスがいくつかあるので、それらをエクスポートしています。
例えば:
alias gcc=/abc/def/......./myrtgcc
export gcc
そして使いたいマイリットターミナルまたは Eclipse からコマンドを使用して C プログラムをコンパイルしますgcc
。システムが実行されることを期待していますmyrtgcc somfile.c -o output
。
しかし、そうではありません。 に上記のエイリアスを追加し.bash_profile
、システムを再起動 (または を使用source .bash_profile
) した後でも、変更は反映されません。ターミナルを開いて と入力するとwhich gcc
、 が表示され/usr/bin/gcc
、Eclipse が「GCC」コマンドを使用すると、同じ が再度呼び出されます/usr/bin/gcc
。
どうやって作るの?マイリットシステム全体のデフォルト、コマンドグーグル
答え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]$
エイリアスはシェルに影響し、他のものには影響しません。 、 などが を実行しようとする場合
make
、eclipse
シェルgcc
エイリアスは関係ありません。また、エクスポートできるのは変数のみで、エイリアスはエクスポートできません。以下は、 perl が を実行しようとする例です (ここでも foo エイリアスを使用)。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
コンパイルするもののほとんどは
cc
、c++
ではなく 、 などを実行しますgcc
。したがって、 をオーバーライドしたとしてもgcc
、おそらく動作しなかったでしょう。
それで、これをどうやって達成するのでしょうか?
最善のアプローチはmake
、 などにどのコンパイラを使用するかを伝えることです。
make CC=/path/to/myrtgcc target
autoconf を使用するプログラムを実行するときに、それを環境に渡すこともできます/.configure
。
2 番目の方法は、(たとえば) に 、 などgcc
という単純なシェル スクリプトを作成し、それをパスの先頭に配置することです。スクリプトは次のようになります。cc
~/bin
#!/bin/sh
exec /path/to/myrtgcc "$@"
そして、次のようにして PATH の先頭に配置します.bashrc
。
PATH="$HOME/bin:$PATH"
export PATH
答え2
シェルのドキュメントを読んでください。プロファイルには 2 つの種類があります。.bash_profile は、すでにログインしていて、新しいターミナルを開くなどの操作を行うときに実行されます。もう 1 つの種類のプロファイルは、システムに最初にログインするときに使用され、奇妙なことに、ログイン プロファイルと呼ばれます。目的のことをするには、.profile に必要なものを入れてみてください。