背景
使用bat直接用bash登录cygwin功能比较少,而且界面比较丑。mintty的帮助比较少,很多链接进不去,目前找到比较齐全的说明都在 minitty tip。
Double commander是个文件浏览器神器,在浏览文件的时候经常会遇到想在当前目录中打开cygwin,执行些任务,然后关闭(用完即走)。故折腾个热键和toolbar按钮。
动手配置
有图有真相:
Doublecmd 配置
其中c:\cygwin32是cygwin安装目录,mintty是cygwin默认安装的终端,在其bin目录底下。故其实核心的也就是一条命令:
C:\cygwin32\bin\mintty.exe -i /Cygwin-Terminal.ico --dir "%1" /bin/env CHERE_INVOKING=1 /bin/bash -l
原因解析
首先,可以先阅读官方说明,截图如下:
官方说明
--dir
minitty选项,用于启动时指定目录。man解释如下:
--dir directory
Change initial directory to start in. This is especially useful for invocation of mintty from a Windows context menu via registry entry.
"%1"
%1 代表是批处理第一个参数,在doublecmd点击按钮的时候,传递的第一个参数是当前路径。(注:没去纠结具体来源,欢迎补充赐教)
/bin/env CHERE_INVOKING=1
置上环境变量CHERE_INVOKING,防止Cygwin在登录的时候切换到$HOME. 因为可以打开cygwin的/etc/profile,会发现如下的一条语句:
# Make sure we start in home unless invoked by CHERE
if [ ! -z "${CHERE_INVOKING}" ]; then
unset CHERE_INVOKING
else
cd "${HOME}" || echo "WARNING: Failed attempt to cd into ${HOME}!"
fi
/bin/bash -l
到这里就是真正开始登录bash了。
网友评论