Answers:
您的脚本有什么样的行尾?为了使Cygwin bash脚本正常运行(无需设置特殊选项),它必须具有Unix行尾(LF),而不是DOS行尾(CR-LF)。如果您保存的脚本以DOS行结尾,则bash会将您的参数显示cd
为/c/Code/Project^M
,其中^M
为CR,并且找不到该名称的目录。
要查看它具有哪种类型的行尾,可以执行file scriptname
,其中scriptname是脚本的名称。要转换脚本使其具有Unix行结尾,请执行d2u scriptname
。
不要使用记事本编辑Cygwin bash脚本。它始终以DOS行结尾保存文件。
:help ff
和:help ffs
。
除非您重写,否则脚本将在其自己的Shell副本(通常是Bash)中执行。然后,当脚本退出时,该bash实例也退出。因此,您的脚本CD进入了一个新目录,然后退出,使您返回到原始的Bash(从未使用过CD)。
解决它的两种方法。您可以使用别名代替脚本,例如,在.profile中有
alias mycd="cd /c/Code/Project"
另一种方法是通过使用“点”语法告诉Bash不要产生子shell。
. myscript