2013-03-26 68 views
8

我想在cygwin中定義一些別名,但沒有成功。我在.bashrc文件末尾這樣做。在Windows下定義Cygwin中的別名

alias foo='pwd' 

我試圖在兩者中加入這一行的.bashrc文件的cygwin的home文件夾中,並在Windows用戶我在C:\Users\Nuno\主文件夾。在這兩種情況下,我只是將此行添加到/etc/skel/.bashrc文件的副本。在任何情況下,它都不起作用。

我以前工作過。我不得不重新安裝Cygwin,因爲它再也無法正常工作。我已經刪除了所有文件(或者至少在重新安裝時這樣認爲)。我也注意到,在第一次安裝(當它工作時),cygwin已經在home文件夾中創建了.bash文件。現在,它沒有。

我運行Windows 7

編輯的機器上:我的cygwin的主文件夾設置爲Windows主文件夾C:\Users\Nuno\。我放置了我認爲有效的.bashrc文件,但它仍然無效。

在此先感謝。

+0

當你執行'cd'時,你最終會在哪裏,因爲那個位置是你的主目錄,這就是.bashrc應該存在的地方。 – fvu 2013-03-26 15:49:53

+0

已經編輯了這個問題來回答這個問題。請看一下。謝謝。 – nunos 2013-03-26 15:56:56

+0

奇數... echo $ HOME的輸出是什麼? – fvu 2013-03-26 16:08:05

回答

8

作爲me_and已經解釋了發生了什麼我只是想添加一個解決方法,如果您出於某種原因無法或不願意刪除Windows的HOME環境變量。

通常爲Cygwin的快捷方式執行

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

相反,你可以創建一個批處理文件,內容如下,並啓動:

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

,將開始AA Cygwin的窗戶,其主目錄設置不被Windows環境變量覆蓋。

+0

你真棒,這也適用於git bash(啓用heroku)'@echo off set HOME = start C:\ Users \ \ AppData \ Local \ Programs \ Git \ git-bash.exe --cd-to- home' – blamb 2016-11-30 08:26:46

6

您的.bashrc文件將從Cygwin Bash認爲您的主目錄是啓動時的任何位置加載。你在編輯中提到你已經改變了你的主目錄,但不是如何,所以你可能在那裏犯了一個錯誤。

Cygwin的將加載你的home目錄是從兩個地方之一,如果不同,它可能會導致問題:

  • HOME環境變量。這將從你啓動Cygwin的過程中獲得,通常來自Windows本身。您可以通過按Win + 暫停,進入「高級系統設置」,「環境變量...」來查看已定義的環境變量。如果「HOME」位於「用戶變量」或「系統變量」中,請刪除它 - 這是不必要的,只會導致問題。

  • Cygwin的/etc/passwd文件(通常來自Windows的C:\Cygwin\etc\passwd)。這將有許多行包含系統上每個用戶的詳細信息;第七個:分隔字段是主目錄。您可以通過從Cygwin bash shell運行whoami來知道它正在查看哪個用戶。

如果whoami報告nunos,你應該在Cygwin的/etc/passwd一行看起來像下面這樣:

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

就這麼/home/nunos這很重要;如果它不同,你應該重置它,在這一點上,你想使用Cygwin的/home/nunos/中的.bashrc

您還應該對包含空格的目錄非常謹慎。C:\Users\nunos應該是好的,但要特別注意C:\Documents and Settings\nunos,它只是不會與Cygwin一起使用。

+0

+1,很好的解釋,但經過我的系統測試後,我可以確認如果homedir設置爲c:\ users中的用戶目錄(cygwin中的'/ cygdrive/c/Users/nunos'),則不會提取.bashrc。一個小的請求:你能解釋爲什麼擦除Windows的'HOME'設置是一件安全的事情嗎? – fvu 2013-03-26 21:25:51

+0

@fvu:很少有Windows程序使用環境變量,而那些做的幾乎肯定會有一個合理的默認值。 Windows本身肯定不會使用「HOME」。 – 2013-03-27 10:23:13

5

我有同樣的問題,其中添加到〜/ .bashrc的別名不起作用。 看起來,出於某種原因,啓動控制檯時不執行〜/ .bashrc。

我偶然發現了一個response,修復

所以,你需要創建一個.bash_profile文件中的一些問題。這個似乎是默認的腳本,並將其放入其中,以確保執行.bashrc。

# ~/.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 

這對我很有用,只要確保.bash_profile是可執行的。 (chmod + x〜/ .bash_profile)

1

下面是一個非常快速和骯髒的方式來做到這一點,但它工作正常大多數東西!

假設您想要始終運行'ls --color'而不是'ls'。不用亂搞.bashrc的東西,你可以創建一個簡單的.bat文件,該文件基本上啓動了原始的ls命令。

這裏就是我所做的:

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

所以,現在,當你鍵入CMD從LS,你實際上是在呼籲ls.bat,進而調用ls2.exe --color,原來的ls命令與--color標誌一起,以及其他參數,這很好地通過%*傳遞。

-1

我有同樣的問題,就是爲什麼不路徑是正確的,正確的路徑是:d:\ C++ \ cygwin的\家庭\ USER_WINDOWS.bash_profile

0

我有同樣的問題,但我是用ConEmu運行我的控制檯。我不得不進入設置,並從該更改設置:

集CHERE_INVOKING = 1 &%ConEmuDrive%\程序\ Cygwin的\ BIN \ sh.exe --login -i -new_console:C:「%ConEmuDrive %\程序\ Cygwin的\ Cygwin.ico」

這樣:

集HOME = &集CHERE_INVOKING = 1 & %ConEmuDrive%\程序\ Cygwin的\ BIN \ bash.exe - 登錄-i -new_conso文件:C:「%ConEmuDrive%\程序\ Cygwin的\ Cygwin的。ICO「

然後它會正常工作

0

它的工作原理是從Cygwin的解釋:

創建一個文件」。在Windows的家目錄的.profile」這將加載每次當你開始時間cygwin的。

您可以與您的別名編輯的文件,也可以將源的.bashrc。

如果你能源,插入「源的.bashrc」,也保存的.bashrc在您的Windows Home目錄。 現在您可以開始編輯.bashrc。