Из руководства по bash
Правила, касающиеся определения и использования псевдонимов, несколько сбивают с толку. Bash всегда читает по крайней мере одну полную строку ввода перед выполнением любой из команд в этой строке. Псевдонимы раскрываются при чтении команды, а не при ее выполнении. Следовательно, определение псевдонима, отображаемое в той же строке, что и другая команда, не вступает в силу, пока не будет прочитана следующая строка ввода. На команды, следующие за определением псевдонима в этой строке, новый псевдоним не влияет. Такое поведение также является проблемой при выполнении функций. Псевдонимы раскрываются при чтении определения функции, а не при ее выполнении , поскольку определение функции само по себе является составной командой. Как следствие, псевдонимы, определенные в функции, недоступны до тех пор, пока эта функция не будет выполнена . В целях безопасности всегда помещайте определения псевдонимов в отдельной строке и не используйте псевдоним в составных командах.
Два предложения «псевдонимы раскрываются при чтении определения функции, а не при выполнении функции» и «псевдонимы, определенные в функции, недоступны до тех пор, пока эта функция не будет выполнена» кажутся противоречащими друг другу.
Можете ли вы объяснить, что они имеют в виду соответственно?
.bashrc
файлах в самом верху.