在Windows下的Cygwin中定义别名

nun*_*nos 13 cygwin

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

alias foo='pwd'
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

提前致谢.

fvu*_*fvu 9

作为me_and已经解释了发生了什么,我只想添加一个解决方法,如果您出于任何原因无法或不愿意删除Windows的HOME环境变量.

通常,Cygwin的快捷方式会执行

C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico -
Run Code Online (Sandbox Code Playgroud)

相反,您可以创建包含以下内容的批处理文件,并从以下内容开始:

@echo off
set HOME=
start C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico -
Run Code Online (Sandbox Code Playgroud)

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


me_*_*and 7

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

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

  • HOME环境变量.这将从您启动Cygwin中获取,通常来自Windows本身.您可以通过按Win+ Pause,转到"高级系统设置","环境变量..." 来查看已定义的环境变量.如果"HOME"在"用户变量"或"系统变量"中,则将其删除 - 这是不必要的,只会导致问题.

  • Cygwin的/etc/passwd文件(通常C:\Cygwin\etc\passwd来自Windows).这将包含许多行,其中包含系统上每个用户的详细信息; 第七个:分隔的字段是主目录.您可以通过whoami从Cygwin bash shell 运行来判断它正在查看哪个用户.

如果whoami报告nunos,你应该在Cygwin中有一行/etc/passwd看起来如下所示:

nunos:unused:1001:513:U-System\nunos:S-1-2-34-567890-123456-7890123-1001:/home/nunos:/bin/bash
Run Code Online (Sandbox Code Playgroud)

/home/nunos是重要的; 如果它是不同的你应该重置它,那时你想使用.bashrc在Cygwin中/home/nunos/.

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


Nas*_*uig 7

我有同样的问题,添加到〜/ .bashrc的别名不起作用.看来,由于某种原因,启动控制台时没有执行〜/ .bashrc.

我偶然发现了一个修复问题的回复

因此,您需要创建一个.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
Run Code Online (Sandbox Code Playgroud)

这对我有用,只需确保.bash_profile是可执行的.(chmod + x~/.bash_profile)