Bash/Cygwin - 别名的行为不像命令

Bash/Cygwin - 别名的行为不像命令

我正在尝试让 Cygwin 设置我在 Windows 中使用的工具,但遇到了一些问题。来自这个帖子,我发现我可以使用以下方式指定 Notepad++ 作为我的编辑器

alias notepad="/cygdrive/c/Program\ Files\ \(x86\)/Notepad++/notepad++.exe"

当我通过命令行运行它时,它有效

notepad $( cygpath -pw ~/.bashrc ) &

打开我的 .bashrc 文件,但是当我尝试将其设为别名时

alias settings="notepad $( cygpath -pw ~/.bashrc ) &"

并输入settings我得到的错误

C:\Program Files (x86)\Notepad++\cygwin64homeuser.bashrc doesn't exist. Create it?

我尝试定义一个变量,但遇到了更多问题。我做错了什么?

答案1

您在 alias 命令中使用了双引号,因此双引号中的内容都会被执行在你设置别名的时候。您必须使用单引号括住别名定义,以便在使用别名时解析变量。例如,尝试以下两个:

alias wtf1='echo $(pwd)'
alias wtf2="echo $(pwd)"

您将看到wtf1正确报告了当前目录,但wtf2似乎停留在您设置别名时所在的目录中。

答案2

我遇到了另一个问题。我$PATH在 Cygwin 下更新了,但错误地删除了/usr/local/bin。后来我才注意到 git 别名停止工作了。恢复PATH解决了这个问题。

相关内容