Questo è davvero molto strano. I passaggi che hai descritto dovrebbero aver funzionato, quindi ci deve essere un piccolo errore nel tuo ambiente o l'esecuzione di tali passaggi. Ci sono alcune cose che puoi fare per aiutare a diagnosticare questo:
CONTROLLO caratteri di controllo
Quello che hai documentato guarda bene, a patto che non ci sono errori di battitura o caratteri di controllo. È necessario verificare digitando:
cat -vt ./test
Se si vede un testo extra inaspettato che potrebbe spiegare il problema. Ad esempio, "^ M" alla fine di una riga indica che il tuo editor ha salvato il file in formato Windows.
rigenerare il FILE AFFIDABILE
Per creare una nota buona ./test2
, copiare e incollare i seguenti comandi:
`which bash`
printf "#\!`which sh`\necho HELLO\n" > ./test2
chmod +x ./test2
./test2
exit
CONTROLLO quale comando non può essere trovato
Se si digita .. .
./ajio
... si fa a ottenere esattamente ...
./ajio: Command not found.
... come descritto con ./test
? Ho appena inventato il nome ajio, quindi non dovrebbe esistere. Se i messaggi corrispondono, in realtà non ti dice nulla di nuovo. Ma se i messaggi differiscono, ciò conferma che lo ./test
è stato trovato ed eseguibile almeno.
E 'anche possibile che la versione di sh
sta cercando di dirti di non che test
non può essere trovato, ma che durante l'esecuzione di un comando test
il guscio cercato di correre non è stato trovato. Questo non dovrebbe essere il comando echo, come con la maggior parte delle implementazioni della shell che sarà un comando interno, implementato all'interno della shell. Ma, la shell può eseguire uno script di inizializzazione contenente una riga che specifica un comando che non può essere eseguito. Se esegui man sh
, ti verranno comunicati tutti i diversi file di avvio che la tua shell potrebbe provare a eseguire. Questi possono essere diversi da quelli usati quando si avvia la shell in modo interattivo. Ma, come principiante, può essere scoraggiante verificare la validità di tali script. È probabile che qualsiasi personalizzazione fasulla sia comunque per il processo di avvio della shell personale e non affligga l'intera installazione di Linux, quindi esegui ls -ld ~/.*
per elencare i file nascosti nella tua home directory e ispeziona qualsiasi aspetto simile ai file di avvio della shell (ad esempio ~/.bashrc, ~/.profile, ~/.bash_login). Verifica che tutti i comandi specificati possano essere trovati con i quali e vengono richiamati dopo che la variabile percorso è stata impostata per includere la loro posizione.
CONFRONTO AD UN ALTRO SHELL
Se c'è un problema con il/bin/sh install/inizializzazione, allora si potrebbe essere in grado di bypassare lo invocando un'altra shell. Provare...
which zsh
which tcsh
which csh
... e se uno di più di questi reperti un guscio alternativo per voi, modificare o ricreare il file che specifica che la Shell, ala ...
#!/bin/csh
echo HELLO
... poi si chmod +x
e ./
-runalo. Se funziona, allora sai che il tuo problema è/bin/sh specifico.
Vuol 'ls/bin/sh' mostrano un file con il bit di esecuzione abilitato? – Ether
Quando si aggiunge la barra mancante, si incontra ancora il problema? La directory in cui ti trovi è montata con qualche (molto) strana opzione? –