在Windows下的Cygwin中定义别名

时间:2013-03-26 15:45:39

标签: cygwin

我试图在cygwin中定义一些别名,但没有成功。我在.bashrc文件末尾这样做。

alias foo='pwd'

我尝试在.bashrc文件中添加此行,位于cygwin的home文件夹内,以及我C:\Users\Nuno\上的Windows用户的主文件夹中。在这两种情况下,我都将此行添加到/etc/skel/.bashrc文件的副本中。在任何一种情况下,它都不起作用。

我之前有过这个工作。我不得不重新安装Cygwin,因为它再也没有正常工作。我删除了所有文件(或者至少在重新安装时这么认为)。我还注意到,在第一次安装(工作时),cygwin已经在home文件夹中创建了.bash文件。现在,它没有。

我在运行Windows 7的计算机上。

编辑:我的cygwin主文件夹设置为Windows主文件夹C:\Users\Nuno\。我已经放置了我认为有效的.bashrc文件,但它仍然不起作用。

提前致谢。

8 个答案:

答案 0 :(得分:9)

作为me_并且已经解释了发生了什么,我只想添加一个解决方法,如果您出于任何原因无法或不愿意删除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 -

这将启动一个Cygwin窗口,其主目录设置不会被Windows环境变量覆盖。

答案 1 :(得分:7)

您的.bashrc文件将从Cygwin Bash认为您的主目录启动时的任何位置加载。你在编辑中提到你已经改变了你的主目录,但没有改变你的主目录,所以你可能在那里犯了错误。

Cygwin将从两个地方之一加载您的主目录,如果它们不同,可能会导致问题:

  • 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的.bashrc中使用/home/nunos/

您还应该非常警惕包含空格的目录。 C:\Users\nunos 应该没问题,但要特别注意C:\Documents and Settings\nunos,这对Cygwin不起作用。

答案 2 :(得分:7)

我有同样的问题,添加到〜/ .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)

答案 3 :(得分:2)

这是一种非常快速和肮脏的方法,但它适用于大多数的东西!

假设您想要始终运行'ls --color'而不仅仅是'ls'。你可以创建一个简单的.bat文件,而不是乱用.bashrc的东西,它本质上是盗取原始的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,带有--color标志的原始ls命令,以及其余的参数,很好地通过%*。

答案 4 :(得分:0)

我有同样的问题,但我使用ConEmu来运行我的控制台。我不得不进入设置并更改设置:

  

设置CHERE_INVOKING = 1& %ConEmuDrive%\ Programs \ Cygwin \ bin \ sh.exe --login -i -new_console:C:“%ConEmuDrive%\ Programs \ Cygwin \ Cygwin.ico”

到此:

  

设置HOME =&设置CHERE_INVOKING = 1&   %ConEmuDrive%\ Programs \ Cygwin \ bin \ bash.exe --login -i   -new_console:C: “%ConEmuDrive%\程序\ Cygwin的\ Cygwin.ico”

然后它会正常工作。

答案 5 :(得分:0)

它的运作方式来自cygwin:

创建一个文件" .profile"在你家的窗户里。每次启动cygwin时都会加载。

您可以使用别名编辑文件,也可以使用.bashrc。

如果你来源,请插入" source .bashrc"并在你的windows home目录中保存.bashrc。 现在您可以开始编辑.bashrc。

答案 6 :(得分:0)

这对我有用在Windows 10上使用Cygwin64。不用担心,“ kubectl”只是我键入“ k”时要运行的程序。更改后重新启动Cygwin终端。

Smith @ NB-Smith-3〜echo“别名k = C:/ Users / Smith / kube / kubectl” >> $ HOME / .bash_profile

更改此文件 C:\ cygwin64 \ home \ Smith.bash_profile

答案 7 :(得分:-1)

我有同样的问题是为什么路径不正确,路径正确的是:D:\ C ++ \ cygwin \ home \ USER_WINDOWS.bash_profile