16

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

alias foo='pwd'

我试图在cygwin 文件夹和我所在的 Windows 用户的主文件夹中的.bashrc文件中添加这一行。在这两种情况下,我都只是将这一行附加到文件的副本中。在这两种情况下,它都不起作用。homeC:\Users\Nuno\/etc/skel/.bashrc

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

我在运行 Windows 7 的机器上。

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

提前致谢。

4

8 回答 8

11

正如我已经解释的那样,我只想添加一个解决方法,如果您出于某种原因无法或不愿意删除 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 环境变量覆盖。

于 2013-03-26T22:03:25.977 回答
10

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

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

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

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

如果whoamireports 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很重要;如果它有所不同,您可能应该将其重置为那个,此时您想使用.bashrcCygwin 中的/home/nunos/.

您还应该非常小心包含空格的目录。C:\Users\nunos 应该没问题,但要特别注意C:\Documents and Settings\nunos,它不适用于 Cygwin。

于 2013-03-26T20:48:57.410 回答
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

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

于 2013-06-05T12:29:00.810 回答
2

这是一种非常快速而肮脏的方法,但它适用于大多数事情!

假设您想始终运行“ls --color”而不仅仅是“ls”。您可以创建一个简单的 .bat 文件,该文件基本上盗版了原始的 ls 命令,而不是搞乱 .bashrc 的东西。

这是我所做的:

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 命令,以及其余的参数,很好地通过了 %*。

于 2013-09-15T02:58:10.940 回答
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%\Programs\Cygwin\Cygwin.ico"

然后它将正常工作。

于 2015-06-28T06:01:17.220 回答
0

它按照 cygwin 的解释工作:

在您的 Windows 主目录中创建一个文件“.profile”。每次启动 cygwin 时都会加载。

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

如果您要获取源代码,请插入“source .bashrc”并将 .bashrc 也保存在您的 Windows 主目录中。现在您可以开始编辑 .bashrc。

于 2017-12-08T06:41:18.167 回答
0

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

Smith@NB-Smith-3 ~ echo "alias k=C:/Users/Smith/kube/kubectl" >> $HOME/.bash_profile

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

于 2020-12-17T10:14:29.123 回答
-1

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

于 2015-06-03T19:50:08.687 回答