最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【整理】在windows下添加右键使得可以运行cygwin且直接定位到当前文件夹 + 【整理】如何在Windows XP中,右键添加命令行cmd command,打开当前文件夹,定位到当前路径

工作和技术 crifan 4641浏览 0评论

【整理】在windows下添加右键使得可以运行cygwin且直接定位到当前文件夹

对于,在windows下,添加右键,使得可以运行cygwin,且直接定位到当前文件夹,之前已经见过了如何设置了:

添加右键打开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的参数含义,可以参考这里:

Linux / Unix Command: 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,打开当前文件夹,定位到当前路径

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (3)

  1. 您好~请问cygwin在这里是什么呢?是一个在D盘中的文件夹吗?
    蔡思婷9年前 (2015-07-29)回复
    • Cygwin是一个Windows下面的模拟Linux的软件。详见我写的教程:Cygwin详解
      crifan9年前 (2015-07-29)回复
      • 好的多谢~
        蔡思婷9年前 (2015-07-29)回复
87 queries in 0.167 seconds, using 22.23MB memory