Як написати скрипт оболонки, який виконується при вході в систему?


16

Я намагаюся написати скрипт bash shell в дистрибутиві Ubuntu 11.10 Linux, який буде виконуватися автоматично при вході в систему. Але я не в змозі зрозуміти, що писати сценарієм, що він автоматично виконається при вході в систему.

Відповіді:


18

Якщо ви хочете, щоб він був глобальним, змініть його

 /etc/profile 

або додати сценарій до

 /etc/profile.d

Якщо ви хочете, щоб він був специфічним для користувача, змініть його

 /home/$USER/.profile

1
Не забувайте, що розширення повинно бути, .shякщо ви помістите сценарій всередину /etc/profile.d/. chmode +x /etc/profile.d/myscript.shзвичайно теж.
Брайан Хаак

Raspbian Stretch. Спроба запустити /usr/local/bin/pihole -cкоманду на автологін конкретного користувача. Додано цей рядок до /home/$USER/.profile- нічого не відбувається. Коли я додаю скрипт до /etc/profile.dцього, він працює, але він є глобальним і запускає його, навіть коли я відкриваю ssh сесію (що не те, що я хочу). Додавання до .bashrcроботи теж, але запускається будь-коли, коли я відкриваю нову оболонку (це не те, що я хочу). Запитання: Чому додавання не /home/$USER/.profileбуде працювати ???
Дрю

3

Просто додайте скрипт bash до програм запуску.

У командному полі введіть

bash /full/path/to/bash/script.sh/

2
Як ви додаєте "bash /.../script.sh" до програм запуску із командного рядка?
алеб

1
ОП ніколи не згадував GUI; що робити, якщо вони знаходяться на віддаленому сервері через SSH і не мають графічного інтерфейсу? Жоден з тегів на робочому столі не застосовувався до питання ...
Doktor J

У заголовку конкретно згадується при вході в систему, і нічого не стосується графічних інтерфейсів настільних ПК.
RichieHH

0

Якщо ви хочете бути більш базовими, ви можете також написати код у ~ / .bash_profile або ~ / .bash_login.

І ви можете отримати джерело будь-якого сценарію, наприклад:

if [ -f ~/.bashrc ]; then
   source ~/.bashrc
fi

0

/etc/profileабо $HOME/.profileабо$HOME/.bash_profile

Я б дуже рекомендував не використовувати, /etc/profile.d/yourscript.shякщо це дає вихід. Під час використання неінтерактивного сеансу ви отримаєте $TERM is not setповідомлення. Це помітно при використанні протоколу ssh, як scp. Зазвичай це не велика справа, однак, Вейму це не подобається, і він кине попередження. Я знаю, що Veeam - це не тема, але варто згадати, що не всі програми витончено ігнорують $TERM is not setпопередження.

Якщо коротко, якщо сценарій генерує вихід, розмістіть його у місцях, зазначених у першому рядку. Однак якщо ви змінюєте середовище і ваш скрипт не генерує вихід, використовуйте останні.

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