Как написать сценарий оболочки, который выполняется при входе в систему?

16

Я пытаюсь написать скрипт оболочки bash в дистрибутиве Linux Ubuntu 11.10, который будет автоматически выполняться при входе в систему. Но я не могу понять, что написать в скрипте, чтобы он автоматически выполнялся при входе в систему.

Dubex
источник

Ответы:

18

Если вы хотите, чтобы он был глобальным, измените

 /etc/profile 

или добавьте скрипт в

 /etc/profile.d

Если вы хотите, чтобы он был специфичным для пользователя, измените

 /home/$USER/.profile
wei2912
источник
1
Не забывайте, что расширение должно быть, .shесли вы поместите свой скрипт в /etc/profile.d/. chmode +x /etc/profile.d/myscript.shконечно тоже.
Брайан Хаак
Растбиан. Попытка выполнить /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/
jokerdino
источник
2
Как добавить «bash /.../script.sh» в автозагрузку приложений из командной строки?
13
1
ОП никогда не упоминал GUI; Что делать, если они находятся на удаленном сервере через SSH и не имеют графического интерфейса? Ни один из тегов рабочего стола не был применен к вопросу ...
Доктор Дж
Название специально упоминает при входе в систему и ничего о настольных графических интерфейсах.
RichieHH
0

Если вы хотите больше ориентироваться на bash, вы также можете написать свой код в ~ / .bash_profile или ~ / .bash_login.

И вы можете найти любой скрипт там, например:

if [ -f ~/.bashrc ]; then
   source ~/.bashrc
fi
Dieter.Wilhelm
источник
0

/etc/profileили $HOME/.profileили$HOME/.bash_profile

Я очень рекомендую против использования, /etc/profile.d/yourscript.shесли он производит вывод. Когда вы используете неинтерактивный сеанс, вы получите $TERM is not setсообщение. Это заметно при использовании протокола ssh, такого как scp. Обычно это не имеет большого значения, но Veeam это не понравится и выдаст предупреждение. Я знаю, что здесь не тема Veeam, но стоит отметить, что не все приложения будут изящно игнорировать $TERM is not setпредупреждение.

Короче говоря, если скрипт генерирует вывод, поместите его в места, указанные в первой строке. Однако, если вы изменяете среду и ваш скрипт не генерирует вывод, используйте последний.

Hickory420
источник