Come configuro ConEmu per eseguire Cygwin Bash?


42

Ho creato una nuova attività

{} Bash

passato la mia directory home

/ dir "C: \ Users \ TMB \"

e aggiunto bash come applicazione

C: \ cygwin \ bin \ bash.exe

Quando apro Bash, non è possibile utilizzare le utility UNIX / Cygwin di base. Come configuro ConEmu per eseguire Cygwin Bash?


Quale versione di ConEmu stai provando? Inoltre, non tutte le versioni bash supportano la directory di lavoro. Git bash - can, come ricordo.
Massimo

Non sono riuscito a capire come impostarmi come directory di lavoro nel mio profilo bash, ma penso di aver trovato una soluzione più generale sotto la risposta contrassegnata.
TMB,

ConEmu x64 120727c.x64
TMB

Con "directory di lavoro" intendo quello che specifichi con l'opzione / dir. A proposito, hai letto questa risposta? superuser.com/a/482340/139371
Massimo

Risposte:


48

Questo potrebbe aiutare gli altri.

Sembra che la versione 140310 di ConEmu rilevi automaticamente CygWin Bash.

Se hai installato Cygwin dopo aver installato ConEmu, dovrai ricaricare ... il tuo elenco di attività.

  1. Vai su Impostazioni ... (Win + Alt + P)
  2. Passa al tuo elenco di attività (Avvio> Attività)
  3. Fai clic sul pulsante Ricarica ...

Ora dovresti vedere {CygWin bash} come una delle tue opzioni nell'elenco delle attività predefinite:

Schermata di CygWin bash in ConEmu

PS: se questo metodo non funziona, prova a ripristinare le impostazioni di ConEmu (fai clic sul pulsante Ripristina ... nella parte inferiore della finestra Impostazioni ).


2
E se Ricarica e Ripristino non funzionano, immagino che potremmo inserire il percorso, il comando e le opzioni come mostrato nella schermata.
TMB

%SystemDrive%\cygwin64\bin\sh.exe --login -iper me su 140304 sul canale di anteprima.
TMB

3
Per me facendo clic sul Add default tasks...pulsante (proprio sopra il Reloadpulsante) ha fatto il trucco ...
Hanan N.

9
Nota che sh.exe non genererà il tuo .bashrc; solo bash.exe lo farà. Quindi sto usando il comando%SystemDrive%\cygwin64\bin\bash.exe --login -i
John Prior,

Il commento di JohnPrior è in realtà molto utile. La variabile PATH era tutta sbagliata quando si utilizza sh.exe, ma con bash.exe ora può effettivamente trovare le mie applicazioni.
flungo,

7

o invece di

C:\cygwin\bin\bash.exe

uso

C:\cygwin\Cygwin.bat

Penso che sia davvero il modo più semplice.
Laurent

6

Assicurarsi che Bash stia ricevendo un valore ragionevole per $PATH; di solito lo eredita da qualunque cosa lo chiami, ma ConEmu è un'applicazione Windows, quindi tutto ciò che fornirà è quello che hai impostato %Path%. Generalmente questo non include le directory del percorso Cygwin, quindi Bash non sa dove cercare ls, ecc.

Il modo in cui lo risolverei sarebbe, tramite qualsiasi mezzo che ConEmu offre per farlo, passare --login -icome argomenti a linea di comando a Bash; questo vi dirà che si sta eseguendo come una shell di login interattiva, in modo che leggerà /etc/profile, ~/.profilee ~/.bashrcall'avvio. Nella mia esperienza, è stato abbastanza per dargli un senso $PATH; se per te non funziona, puoi specificarlo esplicitamente con una riga come PATH=/bin:/usr/bin:/usr/local/bin:[...]:$PATHnella tua~/.bashrc .


Questo mi ha procurato le utility che stavo cercando dopo, volevo puntare alla mia normale directory home di Windows, /cygdrive/c/cygwin/homequindi non ho cancellato homee fatto un nodo con mklink -J home C:\Usersin cmd.exe
TMB

3
Sono contento che abbia fatto il lavoro per te. Non ho mai pensato di usare una giunzione per indicare ~ at c: \ users \ me, ma una volta l'ho fatto con un collegamento simbolico e da quell'esperienza ti do il seguente avviso: se mai dovessi eseguire ComboFix per ripulire un malware infestazione sul tuo computer, eliminerà tutti i file in c: \ users \ you . Ho perso tutto nella mia directory home in quel modo una volta, e il mio ultimo backup era vecchio di una settimana. Non fare lo stesso errore che ho fatto!
Aaron Miller,

2

Questo è il mio modo

Crea una nuova attività in ConEmu con il seguente comando

set HOME=C:\Home & "C:\Home\Applications\cygwin64\bin\mintty.exe" -i /Cygwin-Terminal.ico -

La tua soluzione funziona e mi piace avere l'interfaccia mintty.exe, ma puoi spiegare perché funziona? In particolare, cosa ci fa "&" qui?
Dr. Koutheir Attouchi,

0

So che è una domanda piuttosto vecchia ma volevo comunque condividerla:

Per avviare bash all'interno di una directory di lavoro specifica, impostare il comando ad esempio su SET CHERE_INVOKING=1 & "C:\cygwin\bin\bash.exe --login -i" -cur_console:t:"cygwin terminal"e specificare la directory di lavoro normalmente tramite /dir "..."come descritto qui .


0

Per rendere disponibili i comandi di Cygwin da bash, indipendentemente da come lo si esegue, nonché da cmdo da qualsiasi altra shell, assicurarsi che la Pathvariabile di ambiente abbia binaggiunto la directory di Cygwin .
Vai a Control Panel > System and Security > System(tasto di scelta rapida standard Win+Pause), quindi Advanced system settings > Environment variables. Per tutti gli utenti, modifica la Pathvariabile di sistema , solo per il tuo utente - modifica (crea se non esiste) la Pathvariabile utente .
Supponendo che cygwinsia installato su C:\cygwin(potrebbe essere cygwin64 per Cygwin a 64 bit), aggiungere C:\cygwin\bina Path. Tieni presente che se usi la Pathvariabile di sistema , se aggiungi Cygwin binall'inizio, alcuni comandi di Cygwin oscureranno quelli incorporati (ad es. Quelli di Cygwin findverranno usati al posto di Windows 'find ). Preferisco farlo, ma se non lo fai, aggiungi Cygwin binalla fine del tuo Path.

Poiché la maggior parte delle altre risposte parla anche della configurazione di ConEmu, darò anche la mia opinione personale.

Preferisco eseguire una shell senza login. Ad esempio, in Linux si ottiene una shell di accesso quando si accede dalla console di testo o tramite ssh e una shell interattiva non di accesso quando si apre un emulatore di terminale (xterm, konsole, ecc.).

La mia attività {Bash} ha i /dir "%CD%"parametri dell'attività per impostare la directory di lavoro sulla directory di lavoro della scheda corrente (ad esempio se l'attività bash da lontano). Il comando per avviare bash:
%ConEmuDrive%\cygwin\bin\bash.exe -new_console:C:"%ConEmuDrive%\cygwin\Cygwin.ico"

Le --login -iopzioni di avviso sono omesse, la shell si avvierà come shell interattiva senza accesso (poiché non ha argomenti non di opzione e senza l'opzione -c, e stdin e stdout sono collegati ai terminali, fare riferimento alla sezione INVOCATION della manpage di bash per ulteriori informazioni spiegazione). Leggerà ed eseguirà i comandi dall'utente rcfile ~/.bashrc(no /etc/profileo ~/.bash_profilecome farebbe una shell di login, quindi non è necessario set CHERE_INVOKING=1quale sia rilevante solo per quanto riguarda /etc/profile). Quindi metti i tuoi alias utente, opzioni di shell, variabili di ambiente extra ecc. Su ~ / .bashrc, a cui appartengono giustamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.