2013-03-26 18 views
8

Sto cercando di definire alcuni alias in cygwin, ma senza successo. Sto facendo così in questo modo alla fine del file .bashrc.Definizione degli alias in Cygwin con Windows

alias foo='pwd' 

Ho provato ad aggiungere questa riga in un file .bashrc sia all'interno della cartella home di cygwin e nella cartella principale per l'utente di Windows sono su C:\Users\Nuno\. In entrambi i casi ho appena aggiunto questa riga a una copia del file /etc/skel/.bashrc. In entrambi i casi, non ha funzionato.

Ho avuto questo lavoro prima. Ho dovuto reinstallare Cygwin e da allora non ha mai funzionato correttamente di nuovo. Ho rimosso tutti i file (o almeno lo penso, quando faccio la reinstallazione). Ho anche notato che nella prima installazione (quando funzionava) Cygwin stava già creando file .bash nella cartella home. Adesso no.

io sono su una macchina con Windows 7.

EDIT: mia cartella home cygwin è impostato alla cartella principale di Windows C:\Users\Nuno\. Ho inserito quello che penso sia un file valido .bashrc lì, ma non funziona ancora.

Grazie in anticipo.

+0

dove ci si ritrova quando si esegue 'cd', perché quella posizione è la directory home e è dove dovrebbe essere .bashrc. – fvu

+0

ha già modificato la domanda per rispondere a questa domanda. per favore dai un'occhiata. Grazie. – nunos

+0

Dispari ... qual è l'output di 'echo $ HOME'? – fvu

risposta

8

Come me_e ho già spiegato cosa sta succedendo Voglio solo aggiungere una soluzione alternativa per qualsiasi motivo non sia in grado o voglia rimuovere la variabile di ambiente HOME di Windows.

Normalmente il collegamento per Cygwin esegue

C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico - 

invece si può creare un batchfile con il seguente contenuto e iniziare che:

@echo off 
set HOME= 
start C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico - 

che inizierà aa finestre Cygwin la cui home directory impostazioni non sono sovrascritto da una variabile di ambiente di Windows.

+0

Il tuo fantastico, questo ha funzionato anche per git bash (abilitando heroku) '@echo off set HOME = start C: \ Users \ \ AppData \ Local \ Programs \ Git \ git-bash.exe --cd-to- home' – blamb

6

Il file .bashrc verrà caricato da qualsiasi punto in cui Cygwin Bash pensa che la directory principale sia quando inizia. Hai menzionato nella tua modifica che hai cambiato la tua home directory, ma non come, quindi è possibile che tu abbia commesso un errore lì.

Cygwin caricherà vostra home directory da uno dei due posti, e se differiscono può causare problemi:

  • La variabile HOME ambiente. Questo verrà raccolto dal momento in cui avvierai Cygwin, quindi normalmente da Windows stesso. Puoi vedere quali variabili d'ambiente hai definito premendo Win + Pausa, andare su "Impostazioni di sistema avanzate", "Variabili d'ambiente ...". Se "HOME" si trova in "Variabili utente" o "Variabili di sistema", cancellarlo: non è necessario e causa solo problemi.

  • Cygwin's /etc/passwd file (normalmente C:\Cygwin\etc\passwd da Windows). Questo avrà un numero di linee contenenti i dettagli di ciascun utente sul sistema; il settimo campo separato : è la directory home. Puoi dire quale utente sta guardando eseguendo whoami da una shell bash Cygwin.

Se whoami rapporti nunos, si dovrebbe avere una linea in Cygwin di /etc/passwd che sembra qualcosa di simile al seguente:

nunos:unused:1001:513:U-System\nunos:S-1-2-34-567890-123456-7890123-1001:/home/nunos:/bin/bash 

E 'che /home/nunos che è importante; se è qualcosa di diverso, probabilmente dovresti resettarlo a questo punto, a quel punto si desidera utilizzare lo .bashrc in Cygwin's /home/nunos/.

Si dovrebbe anche essere molto cauti con le directory che contengono spazi per questo.C:\Users\nunosdovrebbe essere va bene, ma attenzione in particolare C:\Documents and Settings\nunos, che semplicemente non funziona con Cygwin.

+0

+1, buona spiegazione, ma dopo aver provato sul mio sistema posso conferma che se l'homedir è impostato nella directory dell'utente in c: \ users ('/ cygdrive/c/Users/nunos' in cygwin-speak) .bashrc non viene prelevato. Una piccola richiesta: puoi spiegare perché cancellare le impostazioni di Windows di HOME è una cosa sicura da fare? – fvu

+0

@fvu: pochissimi programmi Windows utilizzano le variabili di ambiente e quelli che lo fanno avranno quasi sicuramente un valore predefinito. Windows stesso non fa certamente uso di 'HOME'. –

5

Ho avuto lo stesso problema, in cui gli alias aggiunti a ~/.bashrc non funzionavano. Sembra che, per qualche ragione, ~/.bashrc non sia stato eseguito all'avvio della console.

sono incappato in un response che consente di risolvere i problemi

Quindi, è necessario creare un file .bash_profile. Questo sembra essere lo script predefinito e inserire questo codice per assicurarsi che il file .bashrc sia eseguito.

# ~/.bash_profile: executed by bash for login shells. 

if [ -e /etc/bash.bashrc ] ; then 
source /etc/bash.bashrc 
fi 

if [ -e ~/.bashrc ] ; then 
source ~/.bashrc 
fi 

Questo funziona per me, assicurati che .bash_profile sia eseguibile. (chmod + x ~/.bash_profile)

1

Ecco un modo molto veloce e sporco per farlo, ma funziona perfettamente per più cose!

Diciamo che si desidera eseguire sempre 'ls --color' invece di solo 'ls'. Invece di scherzare con le cose di .bashrc, puoi creare un semplice file .bat che essenzialmente bootleg il comando ls originale.

Ecco quello che ho fatto:

cd /bin 
echo ls2.exe %* --color > lsNew.bat 
mv ls.exe ls2.exe 
mv lsNew.bat ls.bat 

Così ora, ogni volta che si digita ls da CMD, in realtà si sta chiamando ls.bat, che a sua volta chiama --color ls2.exe, il comando originale ls con il flag --color, insieme al resto degli argomenti, che sono piacevolmente passati attraverso% *.

-1

Ho avuto lo stesso problema è il motivo per il percorso non è corretto, il percorso corretto è: D: \ C++ \ cygwin \ home \ USER_WINDOWS.bash_profile

0

Ho avuto lo stesso problema, ma mi è stato utilizzando ConEmu a correre la mia console Dovevo andare in impostazioni e modificare le impostazioni da questo:

set CHERE_INVOKING = 1 &% ConEmuDrive% \ Programmi \ Cygwin \ bin \ sh.exe --login -i -new_console: C: "% ConEmuDrive % \ Programmi \ Cygwin \ Cygwin.ico"

a questo:

set HOME = & set CHERE_INVOKING = 1 & % ConEmuDrive% \ Programmi \ Cygwin \ bin \ bash.exe - login -i -new_conso Le: C: "% ConEmuDrive% \ Programmi \ Cygwin \ Cygwin.ico "

Poi avrebbe funzionato correttamente

0

funziona come spiegato da Cygwin:.

Creare un file". .profile" in Windows Home dir Questo caricherà ogni volta quando si inizia cygwin.

È possibile modificare il file con il tuo alias o è possibile fonte il .bashrc.

se ti origine, inserire "fonte .bashrc" e salvare .bashrc anche in Windows Home dir. Ora puoi iniziare a modificare il file .bashrc.