Jak napisać skrypt powłoki wykonywany przy logowaniu?

16

Próbuję napisać skrypt powłoki bash w dystrybucji Linux Ubuntu 11.10, który zostanie wykonany automatycznie po zalogowaniu do systemu. Ale nie jestem w stanie dowiedzieć się, co napisać w skrypcie, który zostanie automatycznie wykonany po zalogowaniu.

dubeks
źródło

Odpowiedzi:

18

Jeśli chcesz, aby był globalny, zmodyfikuj

 /etc/profile 

lub dodaj skrypt do

 /etc/profile.d

Jeśli chcesz, aby był specyficzny dla użytkownika, zmodyfikuj

 /home/$USER/.profile
wei2912
źródło
1
Nie zapominaj, że rozszerzeniem powinno być, .shjeśli umieścisz w nim swój skrypt /etc/profile.d/. chmode +x /etc/profile.d/myscript.shoczywiście też.
Brian Haak
Raspbian Stretch. Próba uruchomienia /usr/local/bin/pihole -cpolecenia autologin określonego użytkownika. Dodano tę linię do /home/$USER/.profile- nic się nie dzieje. Po dodaniu skryptu /etc/profile.ddziała, ale działa globalnie i uruchamia go nawet po otwarciu sesji ssh (co nie jest tym, czego chcę). Dodawanie do .bashrcdziała też, ale działa za każdym razem, gdy otwieram nową powłokę (co nie jest tym, czego chcę). Pytanie: Dlaczego dodawanie do /home/$USER/.profilenie działa?
Drew,
3

Wystarczy dodać skrypt bash do aplikacji Autostart.

W polu polecenia wpisz

bash /full/path/to/bash/script.sh/
jokerdino
źródło
2
Jak dodać „bash /.../script.sh” do aplikacji Autostart z wiersza poleceń?
aleb
1
OP nigdy nie wspomniał o GUI; co jeśli są na zdalnym serwerze przez SSH i nie mają GUI? Żaden z tagów na pulpicie nie został zastosowany do pytania ...
Doktor J
Tytuł wyraźnie wspomina przy logowaniu i nic o graficznych interfejsach użytkownika.
RichieHH,
0

Jeśli chcesz być bardziej specyficzny dla bash, możesz także napisać swój kod w ~ / .bash_profile lub ~ / .bash_login.

Możesz na nim znaleźć dowolny skrypt, na przykład:

if [ -f ~/.bashrc ]; then
   source ~/.bashrc
fi
Dieter.Wilhelm
źródło
0

/etc/profilelub $HOME/.profilelub$HOME/.bash_profile

Zdecydowanie odradzam używanie, /etc/profile.d/yourscript.shjeśli produkuje dane wyjściowe. Gdy korzystasz z nieinteraktywnej sesji, otrzymasz $TERM is not setwiadomość. Jest to zauważalne podczas korzystania z protokołu ssh, takiego jak scp. Zwykle nie jest to wielka sprawa, jednak Veeam nie lubi tego i rzuca ostrzeżenie. Wiem, że Veeam nie jest tutaj tematem, ale warto wspomnieć, że nie wszystkie aplikacje z wdzięcznością zignorują to $TERM is not setostrzeżenie.

Krótko mówiąc, jeśli skrypt generuje dane wyjściowe, umieść je w lokalizacjach określonych w pierwszym wierszu. Jeśli jednak modyfikujesz środowisko, a skrypt nie generuje danych wyjściowych, użyj tego drugiego.

Hickory420
źródło