
У меня есть несколько настроек путей и псевдонимов в .bash_profile, и я их экспортирую.
Например:
alias gcc=/abc/def/......./myrtgcc
export gcc
И я хочу использоватьmyrtgccдля компиляции программ на языке C из терминала или из Eclipse с помощью команды gcc
; Я ожидаю, что система запустится myrtgcc somfile.c -o output
.
Однако это не так. Даже после добавления указанного выше псевдонима в .bash_profile
и перезапуска системы (или использования source .bash_profile
) изменения не отражаются: Если я открываю терминал и набираю which gcc
, я получаю /usr/bin/gcc
и когда eclipse использует команду "GCC", он снова вызывает тот же /usr/bin/gcc
.
Как мне сделатьmyrtgccпо умолчанию в системе, для команды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
, псевдонимы оболочки не будут иметь значения. Вы также можете экспортировать только переменные, а не псевдонимы. Вот пример (снова с псевдонимом foo) попытки perl запустить его: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
Вы также можете передать это в среду при запуске /.configure
программ, использующих autoconf.
Второй подход заключается в создании простых скриптов оболочки, называемых gcc
, cc
и т. д. в (например) ~/bin
и размещении их первыми в вашем пути. Скрипты будут выглядеть примерно так:
#!/bin/sh
exec /path/to/myrtgcc "$@"
и вы бы поместили их на первое место в PATH, используя что-то вроде этого в вашем файле .bashrc
:
PATH="$HOME/bin:$PATH"
export PATH
решение2
Прочитайте документацию по оболочке. Существует два типа профилей. .bash_profile выполняется, когда вы уже вошли в систему и делаете что-то вроде открытия нового терминала. Другой тип профиля используется, когда вы впервые входите в систему, и, как ни странно, он называется профилем входа. Чтобы сделать то, что вы хотите сделать, попробуйте поместить свои вещи в .profile