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


16

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

Ответы:


18

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

 /etc/profile 

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

 /etc/profile.d

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

 /home/$USER/.profile

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/

2
Как добавить «bash /.../script.sh» в автозагрузку приложений из командной строки?
13

1
ОП никогда не упоминал GUI; Что делать, если они находятся на удаленном сервере через SSH и не имеют графического интерфейса? Ни один из тегов рабочего стола не был применен к вопросу ...
Доктор Дж

Название специально упоминает при входе в систему и ничего о настольных графических интерфейсах.
RichieHH

0

Если вы хотите больше ориентироваться на bash, вы также можете написать свой код в ~ / .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 это не понравится и выдаст предупреждение. Я знаю, что здесь не тема Veeam, но стоит отметить, что не все приложения будут изящно игнорировать $TERM is not setпредупреждение.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.