我正在使用Play开发应用程序!框架版本1.2.4。因此,我已经下载了此bin/
文件并将其文件夹添加到我的路径中。
但是,我正准备开始另一场比赛!使用版本2.2.0的Framework项目,这是一个不同的版本。
我不想只更改自己的路径,因为那样我将无法进行第一个项目。
我曾考虑过将符号链接bin/play
到每个项目的根目录,但这似乎不是正确的解决方案。另外,我宁愿没有两个命令(play
和play2
)作为它们各自命令的别名。
什么是正确的方法?
编写以下脚本:
#!/bin/sh
projdir1="$HOME/project/aardvark"
playdir1=/bin/play1.2.4
projdir2="$HOME/project/battlestar"
playdir2=/bin/play2.2.0
︙
case "$PWD" in
"$projdir1" | "$projdir1"/*)
export PATH="$playdir1":"$PATH"
;;
"$projdir2" | "$projdir2"/*)
export PATH="$playdir2":"$PATH"
;;
︙
*)
echo "I don't know which version of \"play\" to use in $PWD"
exit 1
esac
exec $(basename "$0") "$@"
将其放置在bin
名称为的目录中play
,并带有指向该play
目录中其他命令(如果有)的名称的链接。现在,您只需键入所需的命令,脚本就会确定要运行哪个版本。(当然,您的私有bin
目录必须出现在PATH
Play框架目录之前的开头附近。)
如果您想输入类似的命令
play project/aardvark/foo
而在您的主目录中,这将需要做更多的工作。如果你想做
play ../battlestar/bar
在中projects/aardvark
,这会有些困难。
上面的缺点是,每当您定义新项目(或重新定义旧项目)时,都必须更新目录中的play
脚本bin
。这是一种允许在项目目录中本地化配置信息的方法:
#/bin/sh
case "$PWD" in
"$HOME"/*)
# OK
;;
*)
echo "This script should be used only within your home directory tree."
exit 1
esac
rcfile=".playrc"
while [ ! -f "$rcfile" ]
do
rcfile="../$rcfile"
done
. "$rcfile"
exec $(basename "$0") "$@"
然后.playrc
在每个项目的根目录中放置一个文件,说
导出PATH =“ play_dir_for_this_project ”:“ $ PATH”
并.playrc
在您的主目录中放置一个文件,说
echo "You aren’t in a \"play\" project directory."
exit 1
作为支持。可以添加更好的错误处理,并将其作为练习。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句