Big*_*uge 4 windows-registry cygwin bash context-menu console2
我见过这个,但它对我不起作用。我没有使用 Git 的 bash 版本,而是使用 cygwin 附带的版本,因此这可能是问题的一部分。这是我在 Console2 中设置选项卡的方式:
Title: bash.exe
Shell: C:\cygwin\bin\bash.exe --login -i
Startup dir: %HOMEDRIVE%%HOMEPATH%
Run Code Online (Sandbox Code Playgroud)
这是我的注册表项:
Directory
shell
Console2
Open Console2 Here
command
"C:\Console2\Console.exe" -d "%1"
Run Code Online (Sandbox Code Playgroud)
bash 总是从我的主目录而不是我点击的目录开始,然后我必须cd /cygdrive/d/code......等等。我尝试删除“启动目录”字段中的值,将其更改为 %1, %1% 没有运气。
我也尝试过这个解决方案,但它对我也不起作用:
Title: bash.exe
Shell: C:\cygwin\bin\bash.exe -l
Run Code Online (Sandbox Code Playgroud)
注册表:
Directory
shell
Console2
Open Console2 Here
command
"C:\Console2\Console.exe" -d "%V"
Run Code Online (Sandbox Code Playgroud)
上述解决方案适用于 Git 包含的 bash.exe 和 sh.exe 版本,但由于某种原因不适用于 cygwin 包含的版本。还在找这个原因。
我在下面选择了一个答案,但我认为如果我在正确的文件夹中创建了 .profile 文件,上面的第二个解决方案会起作用。我一直试图在我的普通主目录而不是 cygwin 使用的主目录中创建它,这就是它从未执行脚本的原因。这让我相信 .profile 文件是不必要的。我选择的答案(感谢 Hugh!)清楚地解释了 bash 如何使用每个脚本(.bash_profile、.bash_login、.profile 和 .bashrc),这帮助我弄清楚我把它们放在了错误的地方。
从手册中,
当 Bash 作为交互式登录 shell 或作为带有 --login 选项的非交互式 shell 调用时,它首先从文件 /etc/profile 读取并执行命令(如果该文件存在)。
/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
Run Code Online (Sandbox Code Playgroud)
因此,一种解决方案是创建一个 Windows 批处理文件,CHERE_INVOKING在启动 bash 之前设置环境变量。那不是很整洁。
下一个,
读取该文件后,它会按顺序查找 ~/.bash_profile、~/.bash_login 和 ~/.profile,然后从第一个存在且可读的命令中读取和执行命令。
默认情况下,这些配置文件脚本会执行您的~/.bashrc脚本(如果存在)。把cd -我的.bashrc作品放在最后(使用最新的 Console2 和 Cygwin bash):
echo 'cd -' >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我Console.exe不带参数调用 Console2 ( ) - Windows 资源管理器确保它在我右键单击的目录中启动。我使用的是 XP,但我怀疑 MS 会在更高版本的 Windows 中改变这种行为。我还将 Bash 选项卡的“启动目录”选项留空。
| 归档时间: |
|
| 查看次数: |
2820 次 |
| 最近记录: |