【整理】在windows下添加右键使得可以运行cygwin且直接定位到当前文件夹
对于,在windows下,添加右键,使得可以运行cygwin,且直接定位到当前文件夹,之前已经见过了如何设置了:
内容如下:
在注册表(开始\运行中输入 regedit)中添加此项:
在HKEY_CLASSES_ROOT\Directory\shell 中右键点击shell->新建->项
添加一项,名字可以随意起,比如叫做GotoCygwin
在其下再新建一项,叫做command,表示要执行的命令,command下会有一个图标是ab字样的键值,
名称是(默认),类型是REG_SZ,双击其会弹出一个”修改字符串”的窗口,修改数据数值为:
E:\dev_install_root\cygwin\bin\bash -login -c "cd '%1'; exec bash -rcfile ~/.bashrc"
注:前面是你的cygwin安装后对应bash的路径,后面的参数是登录并执行bash
然后就可以进入任何目录,右键点击,就会看到对应的可选项,此处是GotoCygwin,点击即可进入cygwin了
然后就可以进入任何目录,右键点击,就会看到对应的可选项,此处是GotoCygwin,点击即可进入cygwin。
此处,只是再多解释一下相上述的内容,具体都是啥含义:
1. bash和cmd
d:cygwinbinbash是Cygwin的安装目录下面的可执行文件bash
关于bash,经过实测,个人觉得,可以理解为类似于Windows下面的cmd工具,即是一个工具,其提供了一个命令行环境。
所以,不论是在cygwin的bash下面输入cmd,还是在windows下面的cmd中输入bash,本质上都是执行对应的此工具命令而已。而执行的结果,分别就是转到相应的cmd或者bash的环境下面了。
(1)在cygwin的bash下面输入cmd的结果:
D:\Cygwin\etc>bash E516537@CH3UDTDJ9G4C2X /etc $ cmd Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. D:\Cygwin\etc>
(2)在windows下面的cmd中输入bash的结果:
D:\doc>bash E516537@CH3UDTDJ9G4C2X /cygdrive/d/doc $
2. bash的参数
上述中,bash后面跟了两个参数,一个是–login,一个是 -c “cd ‘%1’; exec bash –rcfile ~/.bashrc”。
关于bash的参数含义,可以参考这里:
下面具体来解释这些参数的含义:
(1)–login
–login参数,等价于-l,l即login的首字母。
含义为:
-l
Make bash act as if it had been invoked as a login shell (see INVOCATION below).
使得bash的执行,看起来像是被作为登陆脚本一样而被调用执行的一样,即bash作为登录脚本执行。
对于此处的含义,个人不是很清楚。猜测是,像登陆脚本一样执行,至少有一点能想到的是,就可以执行登陆时候所要执行的脚本文件了。
(2)-c “cd ‘%1’; exec bash –rcfile ~/.bashrc”
语法为:
-c string
If the -c option is present, then commands are read from string. If there are arguments after the string, they are assigned to the positional parameters, starting with $0.
即,把-c后面的字符,当做对应的命令去执行。
而此处对应的命令是:
cd '%1'; exec bash --rcfile ~/.bashrc
其中:
(2.1)cd ‘%1’;
表示切换目录到%1,而此处的%1,就是我们此时所在的文件夹。
(2.2)exec bash –rcfile ~/.bashrc
exec表示要执行对应的文件
此处就是exec后面的参数bash,即执行bash,然后给bash传递的参数是
–rcfile ~/.bashrc
关于–rcfile的参数的语法和含义:
–rcfile file
Execute commands from file instead of the standard personal initialization file ~/.bashrc if the shell is interactive (see INVOCATION below).
的即,执行指定的脚本文件,此处指定的脚本文件是~/.bashrc,注意到,其含义解释中说到的,如果不指定脚本文件,那么默认的脚本文件,也还是~/.bashrc,所以,此处,加不加–rcfile ~/.bashrc这个参数,效果都是一样的。对应的,我们也可以将上面的:
d:\cygwin\bin\bash --login -c "cd '%1'; exec bash --rcfile ~/.bashrc"
改为
d:\cygwin\bin\bash --login -c "cd '%1'; exec bash"
会发现,执行的效果都是一样的,都可以运行Cygwin下面的bash,并且已经跳转到当前文件夹下面了。
看完所有的解释,再回头看看整个这个注册表的键值:
d:\cygwin\bin\bash --login -c "cd '%1'; exec bash --rcfile ~/.bashrc"
对应的含义就是:
先运行对应的Cygwin下面的bash可执行文件,然后传递给了–login参数,表示要让bash以登陆脚本的方式执行,这样就可以传递启动参数和脚本了。
然后-c后面跟着一个字符串”cd ‘%1’; exec bash –rcfile ~/.bashrc”,表示把这个字符串当做命令去执行。
所以就是要执行cd ‘%1’; exec bash –rcfile ~/.bashrc,其中cd ‘%1’是去将执行bash之后的路径(默认是~,即当前用户的默认文件夹,即/home/username,此处对应为D:CygwinhomeE516537,在Cygwin或这说Linux的环境下,表示为/home/E516537),切换到当前你去右键点击的文件夹中去。
切换好了文件夹,然后再调用bash,即exec bash –rcfile ~/.bashrc,去执行bash,登陆脚本为~/.bashrc,接下来就和Linux的shell启动过程一样了,就运行了Cygw的bash,我们看到的命令行模式,就和Linux下面一样了。
下面的内容,已移至:右键快速打开cmd并且定位到该文件夹所在路径
【如何在Windows XP中,右键添加命令行cmd command,打开当前文件夹,定位到当前路径】
两种方法:
1.手动添加:
regedit-> HKEY_CLASSES_ROOT\Directory\shell
在其下新建一个项(目录),比如叫OpenCmd,然后在OpenCmd下面再建一个项(目录),叫command,给command下面的那个值,赋值为”cmd.exe /k pushd %L”,即可。
2.注册表:
或者把下面的内容:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\shell\OpenCmd\command] @="cmd.exe /k pushd %L"
存为OpenCmd.reg,然后双击运行导入注册表,也可实现同样的效果。
转载请注明:在路上 » 【整理】在windows下添加右键使得可以运行cygwin且直接定位到当前文件夹 + 【整理】如何在Windows XP中,右键添加命令行cmd command,打开当前文件夹,定位到当前路径