为什么我不能 'cd' 到 Cygwin 上的 Bash 别名?

Why can't I 'cd' into Bash aliases on Cygwin?

我在 Cygwin 上通过 mintty 终端使用 Bash,我在我的 Cygwin 主目录的 .bashrc 文件中创建了两个别名。

alias croot="C:/cygwin64"
alias desktop="B:/Users/User/Desktop"

当我在终端中输入 crootdesktop 时,似乎工作正常:

B:/Users/User/Desktop: Is a directory

但是,将这些别名与 cd croot returns 之类的东西一起使用会出现错误:

-bash: cd: croot: No such file or directory

这是怎么回事?

alias 并不像您想象的那样工作。这样做:

alias croot='cd C:/cygwin64'
croot

或者:

croot=C:/cygwin64
cd "$croot"

结果:

$ pwd
/

有一种方法可以完成这项工作。但我不推荐它。请改用

$ help alias

alias: alias [-p] [name[=value] ... ] Define or display aliases.

Without arguments, 'alias' prints the list of aliases in the reusable form 'alias NAME=VALUE' on standard output.

Otherwise, an alias is defined for each NAME whose VALUE is given. A trailing space in VALUE causes the next word to be checked for alias substitution when the alias is expanded.

Options: -p print all defined aliases in a reusable format

Exit Status: alias returns true unless a NAME is supplied for which no alias has been defined.

$ alias croot="C:/cygwin64"
$ alias desktop="B:/Users/User/Desktop"

$ alias cd='builtin cd ' # Notice the trailing space.

$ cd croot; pwd
/

请注意,只有紧邻 cd 的单词才会被考虑用于 alias 扩展。因此 cd -P croot 将不起作用。