Команда `alias` в` .profile` не распознается, пока не будет вызван `исходный .profile`

В моем файле .profile в моем домашнем каталоге есть следующая строка:

alias flux = 'redshift -O 2500'

Но всякий раз, когда я вхожу в систему и набираю flux Я получаю сообщение , что поток не распознан .

Затем я делаю исходный профиль и снова набираю flux , и он отлично работает.

Я использую Ubuntu 20.04

Почему псевдоним в моем .profile не работает, если я не использую исходный .profile ?

edit: Теперь я понимаю, что .profile не является правильным местом для размещения этого.

В итоге я загрузил псевдонимы из файла .bashrc , используя команду source :

for file in ~/.dotfiles/.{exports,aliases}; do
    [ -r "$file" ] && source "$file"
done
unset file
5
задан 5 July 2020 в 20:41

1 ответ

TL; DR: Как Гуннар Хьялмарссон говорит , поместите псевдонимы в ~ / .bash_aliases .

Команды в ~ / .profile запускаются оболочками входа в систему. Этот файл является хорошим местом для выполнения действий, которые должны выполняться один раз в начале каждого сеанса, но не повторяться при каждом запуске новой оболочки. ~ / .profile подходит для установки переменных среды, которые будут наследоваться всеми процессами-потомками.

Псевдонимы не наследуются, а оболочка, которую вы получаете в окне терминала в Ubuntu, - нет (по умолчанию ) оболочка для входа. Чтобы определить псевдонимы для всех ваших интерактивных оболочек Bash, определения должны быть где-то, где они будут запускаться каждый раз, когда вы запускаете такую ​​оболочку.

Обычные места находятся либо в:

  • ~ / .bashrc
  • ~ /. bash_aliases

Новый источник интерактивных оболочек без входа в систему ~ / .bashrc (как и некоторые неинтерактивные оболочки). Ваш ~ / .profile , по умолчанию, источник ~ / .bashrc .

Значение по умолчанию ~ / .bashrc в Ubuntu проверяет, если ~ /.bash_aliases существует и получает его.

Я рекомендую помещать новые псевдонимы в ~ / .bash_aliases .


Sourcing ~ / .profile работает для определения псевдонимов. , но он также перезапускает все остальное в этом файле, большинство из которых вам не нужно запускать снова, а некоторые могут делать то, что вам не нужно. Например, ~ / .profile проверяет, существует ли ~ / bin и, если это так, добавляет его в ваш $ PATH . Если вы используете ~ / .profile несколько раз, один и тот же каталог может появляться несколько раз в $ PATH . Это должно произойти довольно много, чтобы вызвать значительные проблемы с производительностью. Но даже одно дополнительное вхождение может вызвать путаницу, когда вы проверяете вывод такой команды, как printenv PATH .

Если ваши псевдонимы не определены даже в начальных оболочках входа в систему , например, когда вы входите с виртуальной консоли или через SSH, то, как Кульфи ссылается на , проблема может заключаться в том, что у вас есть ~ / .bash_profile или ~ /. Файл bash_login . Если такой файл существует, исходный код Bash будет использоваться вместо ~ / .profile . Чаще всего вы не захотите иметь такой файл в Ubuntu, и если вы это сделаете, вам, скорее всего, понадобится его источник ~ /.

7
ответ дан 30 July 2020 в 22:13

Другие вопросы по тегам:

Похожие вопросы: