Це свого роду комплекс. Перш за все, деталі залежать від того, на якій оболонці ви працюєте. Щоб плагіат себе :
Відкриваючи емулятор терміналу ( gnome-terminal
наприклад), ви виконуєте те, що відомо як інтерактивна оболонка без входу .
Коли ви входите в свою машину з командного рядка або запускаєте таку команду, як su - username
, ви запускаєте інтерактивну оболонку входу .
Коли ви входите у графічний спосіб, ви запускаєте щось зовсім інше. Деталі залежатимуть від вашої системи та графічного середовища, але загалом графічна оболонка стосується вашого входу. Хоча багато графічні оболонки (включаючи Ubuntu за замовчуванням) будуть читати, /etc/profile
і ~/.profile
не всі вони.
Нарешті, коли ви запускаєте скрипт оболонки, він запускається в неінтерактивній оболонці без входу .
Файли, які bash буде читати при запуску, залежать від типу оболонки, на якій він працює. Далі - уривок розділу ІНВОКАЦІЯ man bash
(акцент міна):
Коли bash викликається як інтерактивна оболонка входу , або як неінтерактивна оболонка з опцією --login, вона спочатку зчитує та виконує команди з файлу / etc / profile , якщо такий файл існує. Прочитавши цей файл, він шукає у такому порядку ~ / .bash_profile, ~ / .bash_login та ~ / .profile та зчитує та виконує команди з першого, який існує та читається. Параметр --noprofile може використовуватися, коли оболонка запускається для пригнічення такої поведінки.
Коли запускається інтерактивна оболонка, яка не оболонка для входу , bash зчитує та виконує команди з /etc/bash.bashrc та ~ / .bashrc , якщо ці файли існують. Це може бути пригнічено за допомогою параметра --norc. Параметр файлу --rcfile змусить bash читати та виконувати команди з файлу замість /etc/bash.bashrc та ~ / .bashrc.
Це файли ініціалізації. У вас також є місце, /etc/environment
де можна встановити глобальні змінні середовища, але це зчитування, а не джерело (команди всередині нього не виконуються, а задані визначення змінних).
Тепер привітання, яке ви бачите, знову щось інше. Це встановлено /etc/motd
і відображається наскрізь pam_motd
. Як пояснено в man motd
:
Вміст / etc / motd виводиться pam_motd (8) після успішного входу в систему, але безпосередньо перед виконанням оболонки для входу.
Абревіатура "motd" означає "повідомлення дня", і цей файл традиційно використовується саме для цього (він вимагає набагато менше місця на диску, ніж пошта для всіх користувачів).
У Debian GNU / Linux також відображається вміст /run/motd.dynamic. Цей файл генерується /etc/init.d/motd під час завантаження.
Щоб видалити повідомлення, просто очистіть /etc/motd
файл і переконайтесь, що нічого не створюється, /etc/init.d/motd
якщо він присутній.
У будь-якому випадку, виходячи з результатів, які ви показуєте, ви, схоже, ssh
входите в систему , через що ви працюєте з інтерактивною оболонкою входу , див. Вище, що це означає. Отже, підводячи підсумок, все, що вам цікаво, є джерелами, коли ви входите в систему (і в цьому порядку):
- Демон SSH через
pam_motd
модуль бібліотеки PAM виводить вміст /etc/motd
. Через pam_env
модуль він встановлює змінні середовища з /etc/environment
і ~/.pam_environment
.
- Запускається оболонка для входу, і наступні файли читаються в порядку:
/etc/profile
/etc/bash.bashrc
( /etc/profile
джерела Ubuntu за замовчуванням /etc/bash.bashrc
).
~/.bash_profile
. Інші файли, які можна було прочитати тут ( ~/.profile
і ~/.bash_login
), ігноруються, оскільки ~/.bash_profile
існують.
export SET_IN_ETC_PROFILE=yes
в/etc/profile
,export SET_IN_HOME_ZSHRC=yes
в~/.zhshrc
(я користувач ЗШ), і т.д ... Тоді перезавантаження і хорошийenv|grep SET_IN
розповість вам всю історію. Щоб побачити, які змінні бачать настільні програми (ті, які ви запускаєте з тире чи WM, не використовуючи термінал), див. Askubuntu.com/a/356973/16395