Псевдоним из .bash_profile не отражается в системе

Псевдоним из .bash_profile не отражается в системе

У меня есть несколько настроек путей и псевдонимов в .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

Вас смущают несколько вещей:

  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. Псевдонимы влияют на оболочку, а не на другие вещи. Когда 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
    
  3. Большинство вещей, которые компилируют вещи, запускают 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

Связанный контент