如何在Git-Bash中执行初始化脚本后保持Shell持续运行?
如何在Git-Bash中执行初始化脚本后保持Shell持续运行?
最近我遇到个小难题——想通过快捷方式启动Git-Bash后,自动执行我的初始化脚本start.sh,同时让shell保持运行不退出。之前我在别的社区问过这个问题,虽然讨论得还不错,但因为偏题被关闭了,觉得这个需求挺实用的,所以整理出来分享给大家。
一开始我参考了普通bash下保持shell运行的方案,但发现Git-Bash作为一个包装程序,行为和原生bash不太一样,试了好几种方法都没成功。比如我试过用嵌套启动的命令:
/c/Progra~1/Git/git-bash.exe -c 'exec /c/Progra~1/Git/git-bash.exe --cd=/c/DGSante/Git/dg-sante-new-cpms/ --init-file /c/DGSante/Git/dg-sante-new-cpms/start.sh -i'
结果虽然能在指定目录启动第二个Git-Bash并执行脚本,但这个新启动的shell会自动退出,根本留不住。
后来在大家的帮助下终于找到了解决办法——放弃使用Git-Bash的包装器,直接调用Windows版的bash程序。最终能用的快捷方式命令是:
"C:\Program Files\Git\bin\bash.exe" --cd=C:\DGSante\Git\dg-sante-new-cpms\ --init-file C:\DGSante\Git\dg-sante-new-cpms\start.sh
这个命令里,--cd用来指定启动后默认的工作目录,--init-file指定要自动执行的初始化脚本,直接用bash.exe启动的话,执行完脚本后会自动保持交互式shell的状态,完全符合需求。
顺便说下我的start.sh脚本内容,主要是定义了一些常用的别名,方便日常开发:
#!/bin/bash # 编辑器别名 alias n='"C:\\Program Files\\Notepad++\\notepad++.exe"' # 构建命令别名 alias gp='/c/DGSante/Git/dg-sante-new-cpms/gp.sh' # Docker相关命令别名 alias dd='docker-compose down -v' alias db='docker-compose build' alias du='docker-compose up'
备注:内容来源于stack exchange,提问作者DOBRESCU_Mihai.
相关产品推荐
相关产品推荐

