В моем файле .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
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, и если вы это сделаете, вам, скорее всего, понадобится его источник ~ /.