Послідовність сценаріїв, що надходять до входу


41

Я хотів би сконцентрувати всю свою конфігурацію входу в моєму ~/.bash_profile. Там було ~/.bashrcза замовчуванням, але я замінив його на ~/.bash_profile.

Однак, коли я входжу, щось перед моїм ~/.bash_profileз'являється та відображає наступне:

Linux ubnt10-dev1 2.6.32-38-server #83-Ubuntu SMP Wed Jan 4 11:26:59 UTC 2012 x86_64 GNU/Linux
Ubuntu 10.04.4 LTS

Welcome to the Ubuntu Server!
 * Documentation:  http://www.ubuntu.com/server/doc

  System information as of Fri May  9 12:17:39 EDT 2014

  System load:  0.01              Processes:           74
  Usage of /:   5.5% of 18.58GB   Users logged in:     0
  Memory usage: 4%                IP address for eth0: 123.x.x.x
  Swap usage:   0%

  Graph this data and manage this system at https://landscape.canonical.com/

New release 'precise' available.
Run 'do-release-upgrade' to upgrade to it.

Last login: Fri May  9 12:11:52 2014 from 123.x.x.x

Я хотів би видалити це, щоб тільки моє власне привітання із сплеском, визначене в моїх ~/.bash_profileекранах, але я не впевнений у логіці / послідовності скриптів, що виконуються / виконуються, коли користувач входить у систему. Чи можете ви мене просвітити?

Як бонус, я також хотів би знати послідовність автоматизованих джерел / execs під час запуску системи, а не лише тоді, коли користувач починає сеанс, увійшовши в систему, хоча це зараз для мене менша важливість.

Відповіді:


53

Це свого роду комплекс. Перш за все, деталі залежать від того, на якій оболонці ви працюєте. Щоб плагіат себе :

  • Відкриваючи емулятор терміналу ( 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входите в систему , через що ви працюєте з інтерактивною оболонкою входу , див. Вище, що це означає. Отже, підводячи підсумок, все, що вам цікаво, є джерелами, коли ви входите в систему (і в цьому порядку):

  1. Демон SSH через pam_motdмодуль бібліотеки PAM виводить вміст /etc/motd. Через pam_envмодуль він встановлює змінні середовища з /etc/environmentі ~/.pam_environment.
  2. Запускається оболонка для входу, і наступні файли читаються в порядку:
    1. /etc/profile
    2. /etc/bash.bashrc( /etc/profileджерела Ubuntu за замовчуванням /etc/bash.bashrc).
    3. ~/.bash_profile. Інші файли, які можна було прочитати тут ( ~/.profileі ~/.bash_login), ігноруються, оскільки ~/.bash_profileіснують.

5
Приємний трюк для самостійного виявлення цих речей - розміщення дозорних змінних. Я маю в виду, я ставлю 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
Rmano

1
тож коли ти сш, це була б інтерактивна оболонка, правильно?
амфібій

@amphibient - інтерактивна оболонка для входу, так. Коли ви відкриваєте термінал на локальній машині екскурсії, це інтерактивна оболонка без входу.
тердон

@Rmano Я підтримав ваші коментарі. Але через кілька хвилин знайдене замовлення envне має жодного стосунку до порядку виконання.
Penghe Geng

2
@xiaobai, звичайно, ні, справа в тому, що SET_INпокаже, які файли були прочитані, а не в якому порядку вони були прочитані. Порядок є стандартним, це те, що показано в уривках чоловічої сторінки, які я маю у своїй відповіді.
тердон

1

Інформація, яку ви бачите під час входу через ssh, створюється до того, як / etc / profile навіть не переглядалися. Погляньте на послідовність файлів у /etc/update-motd.d. Це покаже вам, де повідомлення, які ви бачите, генеруються різними сценаріями.


1
Це вже висвітлено у верхній відповіді, але я ціную вашу стислість. +1 :)
wjandrea
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.