blo*_*kie 3 linux windows bash shell cmd
我正在移植一个Linux工具集,它经常使用shell函数来提供某些功能.这些函数在您启动新shell时会自动获取,并包含更改工作目录等内容,这对于独立程序来说几乎是不可能的,因为子进程无法更改其父级环境.
例如,有一个函数cdbm可以将工作目录更改为先前已添加书签的目录.现在我想在Windows上做同样的事情,但我坚持不懈cmd.exe.据我所知,脚本可以移植到jscript,vbscript或普通批处理,这应该不是问题.但是,我如何确保它们在启动时自动获取并生活在shell的环境中?
根据help cmd:
If /D was NOT specified on the command line, then when CMD.EXE starts, it
looks for the following REG_SZ/REG_EXPAND_SZ registry variables, and if
either or both are present, they are executed first.
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun
and/or
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
作为测试,regedit我在上面显示的HLM分支中创建了一个名为"AutoRun"的新密钥,其字符串值为"echo Hi".当我开始一个新的实例时,cmd我得到了:
Microsoft Windows [Version 6.0.6000] Copyright (c) 2006 Microsoft Corporation. All rights reserved. Hi C:\Users\Username>
您可以输入要运行的脚本的名称(我会在脚本中放入一个完全指定的路径,或者在其中添加一个环境变量,例如"%HOMEPATH%\ scripts\scriptname"(如果有的话,包括引号)名称中的空格).
编辑:
注册表项有一些副作用.一个例子是help.如果我有echo上面的命令,例如,在我输入的AutoRun中,我help vol在帮助文本上方得到一个"Hi".这样做vol /?,虽然没有做到这一点.