./ vs normale esecuzione

3

Questa è probabilmente una domanda in più per i sistemi unix, ma poiché l'ho sul mio Mac Pro spero di trovare una risposta qui:

Quando sfoglio a /Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home/db/bin

con un cd Non riesco a eseguire il comando startNetworkServer presente in bin, invece posso eseguirlo tramite ./startNetworkServer .

Tuttavia da ~

MacCris:~ cris$ /Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home/db/bin/startNetworkServer

funziona senza ./

Qualche idea sul perché? (diritti relativi?)

Grazie

    
posta Cris 20.12.2013 - 21:39
fonte

2 risposte

7

Questo è dovuto al comportamento della tua shell in esecuzione in Terminal.app. È probabilmente la bash shell

Quando chiedi alla shell di eseguire un comando se fornisci un percorso assoluto (che inizia con / come fa il tuo secondo), cercherà di eseguire quel programma su quel percorso. Se fornisci un percorso relativo (ad esempio, uno che non inizia con / ) cercherà di creare un percorso assoluto anteponendo le directory presenti nella variabile d'ambiente PATH a ciò che hai digitato. Siccome la tua directory corrente o . non è sul tuo PATH, non può trovare un file da eseguire. Se il percorso inizia con . , riporterà il percorso assoluto per la directory corrente e otterrà quindi un percorso che può essere eseguito.

    
risposta data 20.12.2013 - 21:50
fonte
2
  • ~ = home folder nient'altro.

  • ./something eseguirà quel qualcosa (sia esso script o binario)
    Scrivere il percorso completo equivale all'esecuzione con ./

  • cd è la directory di modifica, quindi non eseguirà

Questi sono tutti i comandi standard della riga di comando di unix / linux

Riferimenti:
link link

    
risposta data 20.12.2013 - 21:47
fonte

Leggi altre domande sui tag