CD在bash脚本

我在Windows环境下工作,但更喜欢在cygwin中使用bash作为我的shell。 要cd到一个冗长的path,我在Windows窗体中给我input:

cd $(cygpath -u 'Z:\Some\long\windows\path') 

..从剪贴板中取出窗口path。 由于我很懒,所以我试图做一个快捷方式:

 #!/usr/bin/env bash if [ -z "$1" ]; then exit 0 else TGT=$(cygpath -u $1) cd $TGT fi exit 0 

..然后意识到,CD发生在我的脚本运行在shell中,而不是我从它所调用的,所以没有预期的效果。 我该如何做这项工作?

简单的cd 'Z:\Some\long\windows\path'应该只是实际工作。 尽pipe如此,您可能还想启用nodosfilewarning选项。

您可以将其设置为别名:

 alias cd='cd $(cygpath -u "$1")' 

坚持在你的.bashrc文件或其他任何你有你的别名设置,你应该是金。

否则,你需要将path放在你的自定义脚本path中,而不是使用实际的cd命令(我想cygwin在.bash_profile设置path)。 这可能不会工作,因为CD是一个内置的shell。