Mu博分享 http://blog.sciencenet.cn/u/ywmucn https://blog.nanomat.top/

博文

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

已有 7076 次阅读 2012-5-15 22:03 |个人分类:脚本|系统分类:科研笔记|关键词:学者| windows, 文件夹

写一个注册表文件: addcygwin.reg
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOTDirectoryshellGotoCygwin]

[HKEY_CLASSES_ROOTDirectoryshellGotoCygwincommand]
@="E:\soft\cygwin\bin\mintty.exe -e  E:\soft\cygwin\bin\bash -login -c "cd '%1'; exec bash -rcfile ~/.bashrc""

以下转自: http://www.crifan.com/finishing_in_the_windows_makes_it_possible_to_add_the_right_to_run_cygwin_and_navigate_directly_to_the_current_folder__finishing_in_windows_xp_right-add_command_line_cmd_command_open_the_current_folde/


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

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

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

添加右键打开cygwin窗口

内容如下:

在注册表(开始运行中输入 regedit )中添加此项:

HKEY_CLASSES_ROOTDirectoryshell 中右键点击shell->新建->

添加一项,名字可以随意起,比如叫做GotoCygwin

在其下再新建一项,叫做command,表示要执行的命令,command下会有一个图标是ab字样的键值,

名称是(默认),类型是REG_SZ,双击其会弹出一个"修改字符串"的窗口,修改数据数值为:

1
E:dev_install_rootcygwinbinbash -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的结果:

1
2
3
4
5
6
D:Cygwinetc>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的结果:

1
2
3
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后面的字符,当做对应的命令去执行。

而此处对应的命令是:

1
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这个参数,效果都是一样的。对应的,我们也可以将上面的:

1
d:cygwinbinbash --login -c "cd '%1'; exec bash --rcfile ~/.bashrc"

改为

1
d:cygwinbinbash --login -c "cd '%1'; exec bash"

会发现,执行的效果都是一样的,都可以运行Cygwin下面的bash,并且已经跳转到当前文件夹下面了。

 

看完所有的解释,再回头看看整个这个注册表的键值:

1
d:cygwinbinbash --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下面一样了。

 

【如何在Windows XP中,右键添加命令行cmd command,打开当前文件夹,定位到当前路径】

两种方法:

1.手动添加:

regedit-> HKEY_CLASSES_ROOTDirectoryshell

在其下新建一个项(目录),比如叫OpenCmd,然后在OpenCmd下面再建一个项(目录),叫command,给command下面的那个值,赋值为"cmd.exe /k pushd %L",即可。

2.注册表:

或者把下面的内容:

1
2
3
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTDirectoryshellOpenCmdcommand]
@="cmd.exe /k pushd %L"

存为OpenCmd.reg,然后双击运行导入注册表,也可实现同样的效果。



https://m.sciencenet.cn/blog-588243-571369.html

上一篇:pwscf不能使用超软赝势计算raman
下一篇:右键添加打开方式

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-20 17:48

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部