2011-11-11 3 views
12

Ho un problema strano, non posso eseguire script bash, anche di base come:non è in grado di eseguire gli script di bash anche come root?

#!/bin/bash 
echo "me" 

sto salvandolo come test.sh e poi fare chmod 755 test.sh e una volta che corro ./test.sh ottenendo:

bash: ./test.sh: Permission denied 

qualche idea?

applausi

+4

Lo stai scrivendo in un filesystem montato noexec? –

risposta

19

che può accadere se è stato montato il file system con l'opzione "noexec". Dovresti rimuoverlo.

+2

Inoltre, per sapere rapidamente se il tuo filesystem è stato montato con l'opzione 'noexec', usa: 'mount' E per rimuovere l'opzione 'noexec', basta eliminarlo dall'elenco di opzioni sul file system nel seguente file: '/ etc/fstab'. O in alternativa [aggiungi] (https://bbs.archlinux.org/viewtopic.php?pid=989973#p989973) l'opzione 'exec' alla fine delle opzioni. –

+1

Anche l'opzione 'utente' può causare questo problema. Rimozione mi ha permesso di eseguire il file binario in questione. – rinogo

+0

Ho provato questo, ma sta dicendo il permesso negato –

2

Anche se non direttamente pertinente a questa particolare filettatura; se un file è arrivato da un sistema Windows, potrebbe esserci un CR/LF alla fine della riga. Ciò influirebbe su tutte le righe nel file, inclusa la linea di esecuzione iniziale, e non sarebbe visibile se si sta visualizzando il file.

$ ./test.sh 
-bash: ./test.sh: /bin/bash^M: bad interpreter: No such file or directory 

di vedere questo, si potrebbe gatto -A file:! $ cat -A ./test.sh #!/Bin/bash^M $ echo "me"^M $

Per rimuovere, utilizzare dos2unix.

0

Utilizzare chmod +x ./test.sh questo dovrebbe consentire di eseguirlo.

+1

Idea decente, ma l'OP ha già notato che 'chmod 755' non ha funzionato. –

0

Inoltre, controllare se la directory/il filesystem che contiene lo script è montato su nfs. root non eseguirà script dalle posizioni montate su nfs.

0

è necessario utilizzare ./test.sh quando nella directory di quel file, se non, provi PATH TO THE SCRIPT .o è possibile copiarlo in una directory di /data e chmod per le coperture, poi fare lo steeps.if sopra di voi fallire ancora, va bene perché ho lo stesso problema, l'ho fatto solo per una volta.

+0

Op ha un "permesso negato", non un problema di accesso al percorso – Gar

+0

se sei un utente root e hai ancora quel problema, quindi la tua shell è rotta. So che non potevo eseguire molti comandi della shell sh (simile a bash) anche io ho provato come root e ha detto che l'autorizzazione è stata negata come tua, non ho potuto modificare il permesso. Ho provato a copiarli nella mia directory in '/ data', ho cambiato i permessi e avrei potuto usare i comandi again.but quando ho prova ad eseguire lo script, non è tale file o directory. –

3

Gli script devono essere eseguibili. Usa questo:

chmod +x <script-name>