2013-06-10 25 views
20

Ho un problema piuttosto semplice qui, che mi è accaduto così a casaccio che fino ad ora, l'ho appena ignorato. Ho scaricato server Tomcat web e libro "Java Servlet e JSP di Murach" mi sta dicendo di spostarsi nella directory tomcat/bin e avviare il server mia digitazione nel TerminalCome si eseguono i file .sh o .bat dal terminale?

$ avvio

Tuttavia, ottengo l'errore

-bash: startup: command not found 

I file rilevanti in questa directory sono startup.sh e startup.bat. Digitando entrambi restituisce lo stesso messaggio di errore

Quindi le mie domande sono, quali sono i file .bat e sh e come posso eseguire questi file? Ho letto diversi tutorial per diversi linguaggi e programmi software, e alcune volte quando il tutorial dice di eseguire un gruppo di file nella riga di comando, ottengo un errore "comando non trovato". A volte funziona, a volte no. Questo mi lascia perplessi, quindi quali sono le soluzioni più comuni per risolvere questo tipo di problemi con il "comando non trovato" del terminale?

risposta

36

Il .sh è per sistemi * nix e .bat dovrebbe essere per Finestre. Dal momento che il tuo esempio mostra un errore di bash e tu parli di Terminal, presumo che sia OS X che stai utilizzando.

In questo caso si dovrebbe andare nella cartella e digitare:

./startup.sh 

./ significa solo che si dovrebbe chiamare lo script si trova nella directory corrente. (In alternativa, è sufficiente digitare il percorso completo di startup.sh). Se non funziona, controllare se startup.sh ha autorizzazioni di esecuzione.

+0

Grazie per la spiegazione pilsetnieks. Ho digitato ciò che hai detto e ha funzionato! sul prossimo problema di installazione. – almel

+0

Se si dispone di autorizzazioni negate, potrebbe essere necessario eseguire 'sudo./Startup.sh' –

+0

L'esecuzione di sudo ./scriptname.sh provoca l'errore" comando non trovato "per qualche motivo. – yrg

2

Il tipo finestre sia startup o startup.bat

Il tipo Unix ./startup.sh

(supponendo che ci si trova in tomcat/bin)

8

Questo perché lo script non è nel tuo $ PATH. Utilizzare

./scriptname 

È anche possibile copiare questo per una delle cartelle nel tuo $ PATH o alterare la variabile $ PATH in modo da poter utilizzare sempre solo il nome dello script. Attenzione, tuttavia, esiste una ragione per cui la cartella corrente non si trova in $ PATH. Potrebbe essere un rischio per la sicurezza.

Se si verificano ancora problemi durante l'esecuzione dello script, è consigliabile controllarne le autorizzazioni: è necessario disporre delle autorizzazioni di esecuzione per eseguirlo, ovviamente. Utilizzare

chmod u+x scriptname 

Un file .sh è uno script di shell Unix. Un file .bat è un file batch di Windows.

6

Digitare bash script_name.sh o ./script_name nel terminale Linux. Prima di utilizzare ./script_name, creare script eseguibile da sudo chmod 700 script_name e digitare script_name.bat in Windows.

3

Drag-and-Drop

Il modo più semplice per un utente Mac pigri come me: Drag-and-drop del file startup.sh dal Finder alla finestra terminale e premere Invio.

Per spegnere Tomcat, fare lo stesso con shutdown.sh.

È possibile eliminare tutti i file .bat come se fossero solo per un PC Windows, di nessun utilizzo su un Mac su un altro computer Unix. Li cancello perché rende più facile leggere l'elenco di quella cartella.

autorizzazioni file

trovo che un Tomcat nuovo download non verrà eseguito sul mio Mac a causa delle restrizioni sui permessi di file gettando errori durante l'avvio. Io uso l'app BatChmod che avvolge una GUI attorno ai comandi Unix equivanti per ripristinare i permessi dei file.

sistemi Unix

port-forwarding

proteggere l'accesso alle porte numerate in 1024. Quindi, se si desidera utilizzare la porta 80 con Tomcat è necessario imparare a fare "port-forwarding" per inoltrare le richieste in ingresso sulla porta 8080 dove Tomcat ascolta per impostazione predefinita. Per eseguire il port forwarding, si impartiscono i comandi all'app pack-filtering (firewall) integrata in Mac OS X (e BSD). Ai vecchi tempi abbiamo usato ipfw. In Mac OS X 10.7 (Lion) e versioni successive, Apple si sta spostando su uno strumento più recente, pf.

-1

Ho avuto questo problema per i file * .sh in Yosemite e non riuscivo a capire quale fosse il percorso corretto per una cartella sul mio desktop ... dopo alcuni digrignare di denti, trascinava il file stesso nella finestra del Terminale; hey presto !!

-2

Il mio suggerimento non proviene da Terminal; tuttavia, questo è un modo molto più semplice.

Per i file .bat, è possibile eseguirli tramite Wine. Usa questo video per aiutarti a installarlo: https://www.youtube.com/watch?v=DkS8i_blVCA. Questo video spiegherà come installare, configurare e utilizzare Wine. È semplice come aprire il file .bat in Wine stesso, e verrà eseguito proprio come farebbe su Windows.

Attraverso questo, è anche possibile eseguire file .exe, nonché file .sh.

Questo è molto più semplice di cercare di elaborare tutti i tipi di codice terminale.

0

Digitare

chmod 755 scriptname.sh 

In altre parole, dare il permesso di eseguire il file. Immagino che tu abbia solo il permesso di r/w su di esso.

+0

Questo potrebbe non risolvere il problema. L'errore riportato da @almel indica che la shell ha cercato l'elenco di cartelle dato dalla variabile d'ambiente $ PATH e non ha trovato il file "startup". Mettendo "./ startup ", stai bypassando quella ricerca e dicendo alla shell" Cerca in questa cartella lo script che sto cercando di eseguire " – redsoxfantom

Problemi correlati