[risolto]Script .sh non si eseguono

Domande e richieste di un principiante alle prime armi con Ubuntu e il mondo GNU/Linux in generale. Per domande specifiche, utilizzare le altre sezioni.
Regole della sezione
In questa sezione possono inserire nuove discussioni solo coloro che fanno parte del livello "Prode Principiante" e che non hanno superato i 100 messaggi, tutti gli altri possono comunque rispondere regolarmente. Se si fa parte di questo livello e si è registrati al forum prima del 24 aprile 2012, data del passaggio al nuovo forum, consultare questa discussione.

Immagine Come usare UbuntuPrimi passi su Ubuntu Immagine Amministrazione del sistemaComandi di baseInstallare programmiLog di sistemaRiga di comandoSudo
noglep100
Prode Principiante
Messaggi: 48
Iscrizione: giovedì 19 maggio 2022, 13:35
Desktop: kde
Distribuzione: arch
Sesso: Maschile

[risolto]Script .sh non si eseguono

Messaggio da noglep100 »

Come mai se creo uno script e tento di eseguirlo ricevo il seguente messaggio?

Codice di errore sconosciuto: 100
execvp: Formato eseguibile non valido
Invia una segnalazione dettagliata di bug a https://bugs.kde.org.

il file è nella mia home, ha i permessi di esecuzione, se lo copio nella bash i comandi funzionano, è solo che non si può eseguire come facevo prima con un'altra distro...
Ultima modifica di noglep100 il giovedì 19 maggio 2022, 22:05, modificato 1 volta in totale.
Avatar utente
Clover
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 298
Iscrizione: giovedì 30 agosto 2012, 14:04
Desktop: KDE
Distribuzione: Kubuntu x86_64

Re: Script .sh non si eseguono

Messaggio da Clover »

Perché, probabilmente, non hai messo nella prima riga dello script l'interprete che deve essere usato per eseguirlo.

Per esempio per uno script python la prima riga deve essere

Codice: Seleziona tutto

#!/usr/bin/python3
oppure per uno script sh

Codice: Seleziona tutto

#!/bin/sh
korda
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1703
Iscrizione: giovedì 24 dicembre 2020, 15:58

Re: Script .sh non si eseguono

Messaggio da korda »

noglep100 ha scritto:
giovedì 19 maggio 2022, 15:34
Come mai se creo uno script e tento di eseguirlo ricevo il seguente messaggio?

Codice di errore sconosciuto: 100
execvp: Formato eseguibile non valido
Invia una segnalazione dettagliata di bug a https://bugs.kde.org.

il file è nella mia home, ha i permessi di esecuzione, se lo copio nella bash i comandi funzionano, è solo che non si può eseguire come facevo prima con un'altra distro...
Hai verificato che lo shebang in intestazione punti all'interprete corretto? Sul mio Kubuntu 20.04, ad esempio è, #!/bin/bash
Io non sono Bagheera né Akela, io non frequento la Rupe.
Io sono Kaa: faccio ballare le scimmie alle Tane Fredde.
Lucio C
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 363
Iscrizione: venerdì 10 dicembre 2021, 18:33
Desktop: fvwm
Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
Sesso: Maschile
Località: Paneropoli

Re: Script .sh non si eseguono

Messaggio da Lucio C »

Spero sia chiara all'OP la distinzione tra uno script e un source file.
  • uno script viene eseguito in un altro processo, che puo' essere un "sottoshell" (una altra istanza dello shell in cui si lavora), un altro shell (tcsh sh bash ...), o un altro interprete (awk, perl, python, expect ...)
  • per cui la prima riga dello script deve contenere la "shebang" gia' citata ossia una specie di commento che dice sotto quale shell o interprete deve girare
  • il file contenente lo script deve avere permesso di esecuzione (chmod u+x)
  • lo script si invoca per nome
  • un source file e' una lista di comandi dello shell corrente da eseguire nello stesso processo
  • non richiede di avere permesso di esecuzione
  • si invoca normalmente con modalita' dipendenti dallo shell (p.es. source nomefile in tcsh, . nomefile in sh). Per invocarlo per nome occorre definire un alias
  • Corollario 1: qualsiasi comando "setenv" che assegna o modifica una variabile di environment ha effetto solo nel processo in cui viene emessa. Per cui uno script una volta terminato NON modifica l'environment dello shell corrente. Un source file si.
  • Corollario 2: uno script prende argomenti. Un source file no (a meno di accrocchi che tralascio)
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
korda
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1703
Iscrizione: giovedì 24 dicembre 2020, 15:58

Re: Script .sh non si eseguono

Messaggio da korda »

Mai usato un source file (volontariamente), eccezion fatta per il .bashrc
Io non sono Bagheera né Akela, io non frequento la Rupe.
Io sono Kaa: faccio ballare le scimmie alle Tane Fredde.
noglep100
Prode Principiante
Messaggi: 48
Iscrizione: giovedì 19 maggio 2022, 13:35
Desktop: kde
Distribuzione: arch
Sesso: Maschile

Re: Script .sh non si eseguono

Messaggio da noglep100 »

... è vero era lo shebang errato .. adesso funziona :) era #!/bin/sh
grazie
Lucio C
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 363
Iscrizione: venerdì 10 dicembre 2021, 18:33
Desktop: fvwm
Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
Sesso: Maschile
Località: Paneropoli

Re: Script .sh non si eseguono

Messaggio da Lucio C »

korda ha scritto:
giovedì 19 maggio 2022, 16:52
Mai usato un source file (volontariamente)
Io invece si' proprio per l'esigenza di settare delle variabili di environment.
Indipendentemente dai miei usi e dalla loro storia, molti package di analisi astronomica vengono distribuiti con uno o piu' source file (tipicamente uno per ogni shell piu' diffuso) di inizializzazione, da "sorciare" come primo comando.
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
korda
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1703
Iscrizione: giovedì 24 dicembre 2020, 15:58

Re: Script .sh non si eseguono

Messaggio da korda »

Lucio C ha scritto:
giovedì 19 maggio 2022, 18:31
korda ha scritto:
giovedì 19 maggio 2022, 16:52
Mai usato un source file (volontariamente)
Io invece si' proprio per l'esigenza di settare delle variabili di environment.
Indipendentemente dai miei usi e dalla loro storia, molti package di analisi astronomica vengono distribuiti con uno o piu' source file (tipicamente uno per ogni shell piu' diffuso) di inizializzazione, da "sorciare" come primo comando.
Ma certo! Anch'io con i pacchetti di chimica computazionale dovevo settare variabili d'ambiente, definire alias e quant'altro.

Ma tutto si riduceva a poche righe di inizializzazione da buttare dentro nell'rc file della shell di turno. E morta lì senza bisogno di sourciare nulla.

Ie, basta aprire un nuovo terminale ed è già tutto lì: al massimo il source di altri file di inizializzazione lo faccio direttamente dal mio rc, così ne gestisco uno solo per tutti (ricordo bene gli alias per settare variabili d'ambiente in modo differenziato su più release concomitanti della stessa costosissima suite). Un po' come faccio tutt'ora a livello casalingo: le configurazioni comuni le faccio caricare dal .bashrc di ogni utente pescando da un /etc/bashrc comune.

Quello che intendevo scrivere è che non mi faccio la sbatta di gestire manualmente mille source file per ogni singola circostanza.

...ma tutto questo che ha a che fare con il fatto che l'OP non riesca a lanciare uno script???
Io non sono Bagheera né Akela, io non frequento la Rupe.
Io sono Kaa: faccio ballare le scimmie alle Tane Fredde.
Lucio C
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 363
Iscrizione: venerdì 10 dicembre 2021, 18:33
Desktop: fvwm
Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
Sesso: Maschile
Località: Paneropoli

Re: Script .sh non si eseguono

Messaggio da Lucio C »

Siccome di solito tra le varie cose che fanno questi file di inizializzazione e' settare $PATH, a me spesso torna utile sourciarne uno in uno specifico terminale (evita conflitti). Con le esigenze dell'OP si tratta solo di cultura generale tra script e source file.
Se l'OP mettesse [Risolto] sul titolo del primo post, si chiuderebbe il thread.
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
Scrivi risposta

Ritorna a “Dilemmi del principiante”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 7 ospiti