Pagina 1 di 1

[Risolto]Bash comando gnome-terminal al login

Inviato: martedì 12 febbraio 2019, 7:52
da Eis5
Salute! Da poco mi sono avvicinato al linguaggio bash e nella realizzazione di un piccolo progetto mi sono trovato davanti dei dettagli che non capisco.
Voglio programmare un file .sh in modo tale che ad ogni login si apre un terminale con un messaggio, ad esempio una lista delle cose da fare oggi.
Ho creato due file .sh; uno è nella home, si chiama start.sh e contiene il seguente codice:

Codice: Seleziona tutto

#!/bin/bash
#Da qui chiamo un secondo file .sh dove è contenuta la lista di cose da fare oggi

gnome-terminal -x sh -c "/home/Scrivania/script2"
Il secondo file, script2.sh, è sulla scrivania (vedi percorso nel file .sh precedente) e contiene queste poche righe:

Codice: Seleziona tutto

#!/bin/bash
#Questa è la lista di cose da fare oggi

echo - Fai la spesa
echo - Vai dalla nonna
echo - Leggi qualche barzelletta
echo - Deciditi a scegliere il cosplay per LuccaComix
echo - Datti una mossa e cerca una ragazza carina, simpatica e fuori dagli schemi
Entrambi i file sono eseguibili, il primo file è nella lista dei programmi che si avviano all'accensione del pc cosicché quando faccio il login effettivamente al centro del desktop si apre un terminale con scritta la lista di cose da fare oggi.
I dettagli che non capisco sono due:
1. Dopo il login nel terminale aperto c'è una notifica bianca nella parte superiore che copre una parte dell'output, la scritta recita "Il processo figlio si è concluso normalmente con lo stato 0." con a fianco il tasto da cliccare "Riavvia". Sostanzialmente mi viene notificato che il tutto è stato eseguito con successo e senza errore, il che va bene ma la domanda è se si può nascondere questa notifica...?
2. Se avvio il primo file .sh da terminale, nel terminale da dove lancio il comando "./start.sh" si apre una seconda scheda con l'output che voglio e con la solita notifica bianca fastidiosa, ma nella prima scheda del terminale viene scritto

Codice: Seleziona tutto

# L'opzione «-x» è deprecata e potrebbe essere rimossa in una futura versione del terminale di GNOME.
# Usare «-- » per terminare le opzioni e mettere la riga di comando da eseguire dopo di esso.
È tutto normale oppure dovrei fare qualcosa per eliminare questi due output?
Inizialmente pensavo di aggirare i due problemi facendo comparire la lista delle cose da fare non più su un terminale ma direttamente su un file di testo però ecco... Non saprei proprio come fare.
Ovviamente sono aperto a migliorie qualora se ne potessero fare.

Re: Bash comando gnome-terminal al login

Inviato: martedì 12 febbraio 2019, 9:43
da UbuNuovo
Prova a quotare tutto dopo '-c' e, visto che nello script richiami l'interprete Bash, usa quello non Sh. Prova:

Codice: Seleziona tutto

gnome-terminal -x bash -c "$HOME/Scrivania/script2.sh"

Re: Bash comando gnome-terminal al login

Inviato: martedì 12 febbraio 2019, 15:21
da Eis5
Riguardo l'interprete ho cambiato da "sh" a "bash" come mi hai suggerito, per quotare tutto dopo '-c' non l'avevo già fatto? O probabilmente non ti ho capito io...?
Ad ogni modo ho inserito il codice che mi hai suggerito ma l'output rimane sempre lo stesso in entrambi i terminali

Re: Bash comando gnome-terminal al login

Inviato: martedì 12 febbraio 2019, 15:52
da UbuNuovo
No, prima non era quotato e non c'era nemmeno il nome dello script da richiamare (il path finiva con Scrivania), hai modificato il post.
Ho fatto ora una prova pratica e non mi compare alcun messaggio; per ora non mi viene in mente niente di utile.
Aspettiamo qualche altro parere.

Re: Bash comando gnome-terminal al login

Inviato: martedì 12 febbraio 2019, 16:11
da nuzzopippo
Giusto per ... e se mettesse lo script in attesa? qualcosa del genere :

Codice: Seleziona tutto

#!/bin/bash
#Questa è la lista di cose da fare oggi

echo - Fai la spesa
echo - Vai dalla nonna
echo - Leggi qualche barzelletta
echo - Deciditi a scegliere il cosplay per LuccaComix
echo - Datti una mossa e cerca una ragazza carina, simpatica e fuori dagli schemi
echo "\nPremi [INVIO] per terminare"
read tanto_pe_campa
echo "Ciao, ciao ;)"
Lo script rimarrebbe in attesa dell'input utente e non credo comparirebbe quella notifica.

[Edit] Provato da terminale l'avvio dello script (lista.sh), in effetti da risposta analoga a quanto indicato dallo OP, ciò malgrado la guida, funziona il comando :

Codice: Seleziona tutto

 gnome-terminal -e ~/test/lista.sh
(test è dove ho inserito lo script dello OP) ma il "nuovo" terminale compare un attimo e scompare immediatamente, provata la versione con la "attesa" e rimane aperto.
Comunque, anche per l'opzione -e viene presentata una comunicazione di obsolescenza :

Codice: Seleziona tutto

# L'opzione «-e» è deprecata e potrebbe essere rimossa in una futura versione del terminale di GNOME.
# Usare «-- » per terminare le opzioni e mettere la riga di comando da eseguire dopo di esso.
Nessun messaggio comnpare dando il comando così :

Codice: Seleziona tutto

NzP:~$ gnome-terminal -- ~/test/lista.sh
NzP:~$ 
e lo script viene avviato, senza l'attesa di input però non si fa in tempo a vederlo.

Re: Bash comando gnome-terminal al login

Inviato: martedì 12 febbraio 2019, 16:27
da UbuNuovo
Il problema non è la chiusura del terminale a fine programma; per evitarlo senza usare 'read' nello script secondario, basta aggiungere 'bash' come ultimo comando nel primo script, tipo:

Codice: Seleziona tutto

gnome-terminal -x bash -c "$HOME/Scrivania/script2.sh;echo \"La mia home e è $HOME\";bash"

Re: Bash comando gnome-terminal al login

Inviato: martedì 12 febbraio 2019, 16:44
da nuzzopippo
Sei troppo svelto @Ubunuovo, hai risposto mentre editavo la mia precedente risposta :)
UbuNuovo [url=https://forum.ubuntu-it.org/viewtopic.php?p=5114698#p5114698][img]https://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Il problema non è la chiusura del terminale a fine programma; per evitarlo senza usare 'read' nello script secondario, basta aggiungere 'bash' come ultimo comando nel primo script, tipo:

Codice: Seleziona tutto

gnome-terminal -x bash -c "$HOME/Scrivania/script2.sh;echo \"La mia home e è $HOME\";bash"
Questa non la sapevo (una delle tante, purtroppo).
Copiata ed adattata ha un effetto "particolare" mi apre una nuova scheda di terminale,[Edit] Non una nuova finestra,[/Edit] l'ho lanciata un paio di volte prima di rendermene conto ... singolare ed interessante.

Re: Bash comando gnome-terminal al login

Inviato: martedì 12 febbraio 2019, 16:47
da UbuNuovo
Sì, è fatto per eseguire il secondo script in un altra finestra.
Potrebbe provare con '-e', così:

Codice: Seleziona tutto

gnome-terminal -e "bash -c \"$HOME/Scrivania/script2.sh;exec bash\""
Non mi viene in mente come a me e a te funzioni e a lui no.

edit: @Nuzzopippo: non avevo visto la seconda parte del tuo messaggio.
Allora probabilmente dipende dalla versione di bash, la mia probabilmente è più vecchia; è

Codice: Seleziona tutto

 8-) bash --version
GNU bash, versione 4.3.11(1)-release (x86_64-pc-linux-gnu)

Re: Bash comando gnome-terminal al login

Inviato: martedì 12 febbraio 2019, 17:00
da nuzzopippo
credo proprio Tu abbia ragione

Codice: Seleziona tutto

NzP:~$ bash --version
GNU bash, versione 4.4.19(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2016 Free Software Foundation, Inc.
Licenza GPLv3+: GNU GPL versione 3 o successiva <http://gnu.org/licenses/gpl.html>

Re: Bash comando gnome-terminal al login

Inviato: martedì 12 febbraio 2019, 17:03
da Eis5
@ubuNuovo
Ho modificato solo il percorso incompleto del primo codice che ho inserito e dato al secondo bash il nome che hai usato tu nella prima risposta, qualora domani qualcuno trovasse utile il post almeno il codice è corretto
Utilizzando il tuo ultimo codice
UbuNuovo ha scritto:Sì, è fatto per eseguire il secondo script in un altra finestra.
Potrebbe provare con '-e', così:

Codice: Seleziona tutto

gnome-terminal -e "bash -c \"$HOME/Scrivania/script2.sh;exec bash\""
Non mi viene in mente come a me e a te funzioni e a lui no.
l'output "bianco" sparisce però rimangono gli output di deprecazione, rimozione futura e compagnia bella ma se utilizzo

Codice: Seleziona tutto

gnome-terminal -- ~/test/lista.sh
nel primo file e aggiungo la chiusura del terminale da tastiera nel secondo, semplicemente per un fatto di comodità, ottengo il terminale che si apre con la lista di cose da fare senza alcun tipo di output che copre le scritte del terminale o che minaccia la futura versione di GNOME

Così:

Codice: Seleziona tutto

#!/bin/bash
#Da qui chiamo un secondo file .sh dove è contenuta la lista di cose da fare oggi

#gnome-terminal -x bash -c "$HOME/Scrivania/forum2"
#gnome-terminal -x bash -c "$HOME/Scrivania/forum2;echo \"La mia home e è $HOME\";bash"
#gnome-terminal -e "bash -c \"$HOME/Scrivania/forum2;exec bash\""

gnome-terminal -- ~/Scrivania/script2

Codice: Seleziona tutto

#!/bin/bash
#Questa è la lista di cose da fare oggi

echo - Fai la spesa
echo - Vai dalla nonna
echo - Leggi qualche barzelletta
echo - Deciditi a scegliere il cosplay per LuccaComix
echo - Datti una mossa e cerca una ragazza carina, simpatica e fuori dagli schemi
echo
echo "Premi [INVIO] per terminare"
read tanto_pe_campa
echo "Ciao, ciao ;)"
Per scrupolo la versione del mio bash

Codice: Seleziona tutto

eis@Frenki:~/Scrivania$ bash --version
GNU bash, versione 4.4.19(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2016 Free Software Foundation, Inc.
Licenza GPLv3+: GNU GPL versione 3 o successiva <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Grazie ad entrambi ubuNuovo e nuzzopippo :)

Re: Bash comando gnome-terminal al login

Inviato: martedì 12 febbraio 2019, 18:27
da UbuNuovo
Scusate ho dovuto assentarmi all'improvviso.
Ho provato ora il comando del tipo:

Codice: Seleziona tutto

gnome-terminal -- ~/Scrivania/script2
e sembra funzionare regolarmente.
@Eis5: Se ho capito bene dovrebbe funzionare a tutti./?

Re: Bash comando gnome-terminal al login

Inviato: mercoledì 13 febbraio 2019, 0:12
da Eis5
Si funzionano entrambe le due soluzioni, metto risolto
Grazie ancora UbuNuovo e nuzzopippo

Re: [Risolto]Bash comando gnome-terminal al login

Inviato: mercoledì 13 febbraio 2019, 0:15
da UbuNuovo
Bene, si impara sempre qualcosa.
Ciaux