如何在执行实际命令之前创建更改环境变量的别名命令

时间:2010-11-19 07:52:43

标签: scripting windows-7 powershell

首先,我很抱歉,但这是一个“给我一个代码”的问题。不过,我保证会从你的答案中学习!这意味着如果您认为有必要,可以随意使用Socratic method


我目前正在使用Grails开发(维护和构建新的)多个站点,它的工作方式是它提供了一个命令行shell来执行各种任务。

这一切都很好,但在版本之间切换有点令人讨厌,因为它全部由一个名为GRAILS_HOME的环境变量控制,该变量设置为指向{{1}这样的目录}。

现在,我希望能够做到这一点,而不是做这样的事情:

C:\grails\grails-1.2.3\

然后注意到我使用的是错误的版本而我必须回去,我宁愿做

grails create-app MyWebApp
grails list-plugins -repository=myPluginRepo
grails install-plugin myPlugin

会立刻告诉我,我正在使用Grails 1.3.5。

我在创建这样的psh脚本时遇到的问题是我绝对不喜欢创建脚本。我确实尝试过这样做但是在从psh本身发出大约五条神秘的错误消息后,我决定只是征求意见。

加分点:如果我可以参数化别名调用以指定版本(类似g135 create-app MyWebApp g135 list-plugins -repository=myPluginRepo g135 install-plugin myPlugin ),然后将数字附加到环境变量值, 这对我来说是最方便的解决方案。

1 个答案:

答案 0 :(得分:4)

这应该这样做:

Function PSGrails($ver)
    {
    $env:GRAILS_HOME='c:\grails\grails-{0}\' -f $ver
    grails $args
    }

它只是一个设置变量的短函数,然后执行上面的grails。

通过直接在函数名称后指定版本号来运行它:

psgrails 1.3.5 create-app MyWebApp     
psgrails 1.3.5 list-plugins -repository=myPluginRepo     
psgrails 1.3.5 install-plugin myPlugin