Come eseguire automaticamente uno script di shell quando si accede ad Ubuntu


14

Come posso ottenere uno script da eseguire automaticamente quando effettuo l'accesso? Non quando la macchina si avvia, e non per tutti gli utenti, ma solo quando I (o qualsiasi utente specifico con lo script) effettua il login tramite l'interfaccia utente di GNOME.

Da leggere altrove ho pensato che fosse .bash_profile nella mia home directory, ma per me non ha alcun effetto. Quando eseguo manualmente in una finestra di terminale digitando ~/.bash_profile funziona, ma non verrà eseguito automaticamente quando effettuo l'accesso.

Sto usando Ubuntu 11.04. Il permesso del file sul mio .bash_profile è -rwx------. No .bash_profile esisteva nella mia home directory prima di averlo creato oggi.

Mi sembra di ricordare le versioni precedenti di Linux che hanno un .profile file per ogni utente, ma anche questo non funziona.

Com'è fatto? Devo configurare qualcos'altro per far funzionare .bash_profile? O lo script di accesso per utente deve essere in qualche altro file?


.bash_profile, .profile e .bashrc (che è quello effettivamente usato da Ubuntu) vengono caricati ogni volta che apri un terminale bash. Quindi in realtà non sono sicuro che verranno caricati se effettui il login in GDM.
Juan Sebastian Totero

Pubblicare la tua versione di Ubuntu potrebbe aiutarti. In Ubuntu 10.10 .bashrc "funziona per me (TM)."
Vlueboy

Intendi quando accedi alla GUI o alla shell?
Flimzy

bash li carica quando si avvia una nuova shell, quindi verranno caricati solo quando si apre una finestra di terminale o si accede a un terminale virtuale, non quando si accede a Gnome (GDM).
shiftycow

Sto usando Ubuntu 11.04, come ho menzionato nella domanda originale.
Mike Rowave

Risposte:


11

Potresti semplicemente aggiungere il seguente comando in System & gt; Preferenze & gt; Applicazioni di avvio:

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

Questo dovrebbe fare il trucco;)


Sai cosa, l'ho fatto prima e non ha funzionato ... tranne che non ho scritto "bash" prima del percorso della sceneggiatura! Ci proverò con il bash più tardi. Per curiosità, quando si immette qualcosa tramite la GUI in Applicazioni di avvio, in quale file è registrato?
Mike Rowave

I programmi di avvio devono essere registrati in /etc/xdg/autostart
shiftycow

Aggiunta bash /home/myusername/scriptname a "Startup Applications" ha funzionato! Grazie. Comunque questo potrebbe essere specifico per GNOME su Ubuntu, ecco perché mi stavo chiedendo dove sono registrate le voci nel menu "Startup Applications", poiché sarebbe più probabile che fossero simili nelle altre versioni moderne di Linux.
Mike Rowave

2
/etc/xdg/autostart sembra un file system-wide, non specifico per un utente.
Mike Rowave

Per le versioni successive di Ubuntu vedere askubuntu.com/questions/159887/...
TooTone

7

Quindi in pratica, come nodiscc suggerito, crea un launcher desktop: ~ / .Config / autostart / script.desktop con i seguenti contenuti:

[Desktop Entry]
Type=Application
Name=Autostart Script
Exec=autostart
Icon=system-run
X-GNOME-Autostart-enabled=true

Quindi crea lo script di avvio automatico: ~ / Bin / autostart con i tuoi contenuti bash:

#!/bin/bash
# Execute bash script below

Assicurati che ~ / Bin / autostart è eseguibile


5

Puoi aggiungere una riga in crontab -

crontab -e

Quindi aggiungi questa linea al file che si apre:

@reboot /path/to/your/cool/script

Questo eseguirà lo script al riavvio. Per maggiori dettagli vedi man crontab


Non so perché, ma non riesco a eseguire i file .sh su "start up applications", quindi il modo più semplice per farlo ora è cron
Albert Català


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.