Це свого роду комплекс. Перш за все, деталі залежать від того, на якій оболонці ви працюєте. Щоб плагіат себе :
Відкриваючи емулятор терміналу ( 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