2014-04-12 6 views
18

Sto cercando di eseguire comandi Unix su entrambi gli bash.exe e mintty.exe, trovato in Cygwin64/bin (ad es. Usr/bin/bash.exe). Quando provo a eseguire il comando Unix ls, ottengo bash: ls: command not found. Tuttavia, quando faccio clic sull'icona del desktop per il terminale Cygwin e inserisco ls nel terminale Cygwin risultante, Unix comanda come ls lavoro! Perché i comandi Unix non funzionano su bash.exe e mintty.exe, ma sul terminale i risultati facendo clic sull'icona? Inoltre, qual è la differenza delle due shell portate da bash.exe e mintty.exe?Cygwin Bash.exe vs mintty.exe

risposta

28

Questi due programmi non sono in alcun modo alternativi l'uno all'altro. Bash è un shell e MinTTY è un terminal emulator. MinTTY normalmente esegue la shell dell'utente all'interno di se stessa, che può essere o non essere Bash. Vale a dire, di solito usi i due programmi insieme.

Se si esamina la scorciatoia MinTTY creata da Cygwin setup.exe, si scoprirà che non è un semplice avvio del programma. Lo esegue come mintty -, che indica a MinTTY di eseguire la shell dell'utente come shell di "accesso".

Questo è il problema che hai incontrato. Se esegui bash.exe senza opzioni, ottieni la shell nuda, con la sua configurazione predefinita, il che significa che non fa cose come aggiungere il Cygwin /bin al tuo PATH. Allo stesso modo, se si esegue mintty.exe senza opzioni, viene eseguita la shell dell'utente senza opzioni. Quando si dà un trattino a mintty.exe invece di un nome di programma, viene eseguita la shell dell'utente come shell di login: bash -l, anziché solo bash. Quella opzione fa sì che Bash legga in un gruppo di script di avvio subito dopo il lancio, che imposta il comando PATH e molto altro ancora.

Quindi, se si dovesse eseguire bash.exe fuori MinTTY per qualche motivo, si potrebbe dire bash -l per ottenere un comportamento un po 'più vicino a quello di bash.exe quando viene eseguito tramite mintty -. Perdereste su tutte le funzionalità dell'emulatore terminale, comunque. MinTTY ha un comportamento di copia-incolla molto migliore rispetto alla console di Windows, ad esempio, in particolare su Windows 8 e precedenti.

(Windows 10 incluso a much-improved console, ma MinTTY è ancora meglio, secondo me, soprattutto quando si lavora con Cygwin.)

Say man mintty al prompt dei comandi Cygwin per una spiegazione più completa di tutte le cose MinTTY fa per voi. Questa particolare domanda ha avuto risposta nella sezione INVOCATION di the MinTTY manual page.

+1

Grazie per la risposta! –