Існує дві пов'язані причини, через які псевдоніми не завжди працюють, коли їх розміщують у .profileфайлі. Перший полягає в тому, що .profile(або .bash_profile) файл запускається лише для оболонки входу. Якщо ви запускаєте bash у вікні термінала під X, ваш емулятор терміналу (наприклад, gnome-termanl), ймовірно, не працює bash як оболонка входу. [У більшості є можливість змінити це, якщо ви хочете, але за замовчуванням (для gnome-termal все одно) це не запускати його як оболонку для входу.]
Оболонка буде інтерактивною оболонкою і тому .bashrcбуде запущена.
Однак зазвичай bash запускається як оболонка входу назад під час запуску сеансу X. Отже, якщо в ньому є команди псевдоніму, .profileвони будуть виконані разом із встановленням змінних оточуючих середовищ, таких як PATH і т.д. На відміну від змінних середовища, псевдоніми не можна експортувати з одного примірника bash до нового, розпочатого ним. Тож псевдоніми не передаються новій оболонці.
Щоб побачити це, спробуйте цей експеримент:
export ROBERT=bob
alias james=jimmy
echo $ROBERT
alias james
bash #start a new bash instance
echo $ROBERT
alias james
exit #end the new bash instance and revert to the original one
echo $ROBERT
alias james
Зауважте, що .bashrcвін не запускається bash, коли він запускається як оболонка входу. Тож розміщення псевдонімів не завжди спрацює, якщо ви не отримаєте .bashrcсвоє .profile, що є звичайною практикою.
gl? Термінал? GUI?