Schreiben Sie das folgende Skript:
#!/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") "$@"
Legen Sie es in Ihrem binVerzeichnis mit dem Namen ab play, mit Links zu den Namen aller anderen Befehle, die sich im playVerzeichnis befinden (falls vorhanden). Jetzt können Sie einfach den gewünschten Befehl eingeben und das Skript ermittelt, welche Version ausgeführt werden soll. (Natürlich binmuss Ihr privates Verzeichnis PATHvor allen Play! Framework-Verzeichnissen am Anfang Ihres Verzeichnisses stehen.)
Wenn Sie Befehle wie eingeben möchten
play project/aardvark/foo
Wenn Sie sich in Ihrem Home-Verzeichnis befinden, ist etwas mehr Arbeit erforderlich. Wenn Sie in der Lage sein wollen, zu tun
play ../battlestar/bar
In der Zeit projects/aardvarkwird das etwas schwieriger.
Ein Nachteil des oben Gesagten ist, dass das playSkript in Ihrem binVerzeichnis jedes Mal aktualisiert werden muss, wenn Sie ein neues Projekt definieren (oder ein altes neu definieren). Hier ist ein Ansatz, mit dem die Konfigurationsinformationen in den Projektverzeichnissen lokalisiert werden können:
#/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") "$@"
Legen Sie dann .playrcin jedes Projekt-Stammverzeichnis eine Datei mit der Aufschrift
export PATH = " play_dir_for_this_project ": "$ PATH"
und legen Sie eine .playrcDatei in Ihrem Home-Verzeichnis mit den Worten
echo "You aren’t in a \"play\" project directory."
exit 1
als Rücklaufsperre. Eine bessere Fehlerbehandlung kann hinzugefügt werden und bleibt als Übung.
export the-bin-dir/:$PATH,the-bin-dirdas die Binärdateien für dieses Projekt enthält. Es ist jedoch leicht zu vergessen, dieses Skript zu Beginn einer Programmiersitzung aufzurufen.