Come scrivere uno script di shell che viene eseguito all'accesso?


16

Sto cercando di scrivere script shell bash in Ubuntu 11.10 Linux distro, che verrà eseguito automaticamente accedendo al sistema. Ma non sono in grado di capire che cosa scrivere nello script che verrà eseguito automaticamente al momento dell'accesso.

Risposte:


18

Se vuoi che sia globale, modifica

 /etc/profile 

o aggiungi uno script a

 /etc/profile.d

Se vuoi che sia specifico dell'utente, modifica

 /home/$USER/.profile

1
Non dimenticare che l'estensione dovrebbe essere .shse metti dentro il tuo script /etc/profile.d/. chmode +x /etc/profile.d/myscript.shovviamente anche.
Brian Haak,

Raspbian Stretch. Tentativo di eseguire il /usr/local/bin/pihole -ccomando su accesso automatico di un utente specifico. Aggiunta questa riga a /home/$USER/.profile: non succede nulla. Quando aggiungo script /etc/profile.dallora funziona, ma è globale e lo esegue anche quando apro la sessione ssh (che non è quello che voglio). L'aggiunta a .bashrcfunziona anche, ma viene eseguita ogni volta che apro una nuova shell (che non è quello che voglio). Domanda: Perché aggiungere a /home/$USER/.profilenon funzionerebbe ???
Estratto il

3

Basta aggiungere lo script bash alle applicazioni di avvio.

Nel campo di comando, immettere

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

2
Come si aggiunge "bash /.../script.sh" alle applicazioni di avvio dalla riga di comando?
aleb,

1
OP non ha mai menzionato una GUI; cosa succede se si trovano su un server remoto tramite SSH e non dispongono di una GUI? Nessuno dei tag desktop è stato applicato alla domanda ...
Doktor J

Il titolo menziona specificamente all'accesso e nulla sulle GUI desktop.
RichieHH,

0

Se vuoi essere più specifico per bash puoi anche scrivere il tuo codice in ~ / .bash_profile o ~ / .bash_login.

E puoi procurarti qualsiasi script al suo interno, ad esempio:

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

0

/etc/profileoppure $HOME/.profileoppure$HOME/.bash_profile

Consiglio vivamente di non utilizzare /etc/profile.d/yourscript.shse produce output. Quando si utilizza una sessione non interattiva, si riceverà un $TERM is not setmessaggio. Ciò è evidente quando si utilizza il protocollo ssh, come scp. Di solito non è un grosso problema, tuttavia, a Veeam non piace e lancerà un avvertimento. So che Veeam non è l'argomento qui, ma vale la pena ricordare che non tutte le applicazioni ignoreranno con grazia l' $TERM is not setavvertimento.

In breve, se lo script genera output, posizionalo nelle posizioni specificate sulla prima riga. Tuttavia, se stai modificando l'ambiente e il tuo script non genera output, usa quest'ultimo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.