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 bin
Verzeichnis mit dem Namen ab play
, mit Links zu den Namen aller anderen Befehle, die sich im play
Verzeichnis 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 bin
muss Ihr privates Verzeichnis PATH
vor 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/aardvark
wird das etwas schwieriger.
Ein Nachteil des oben Gesagten ist, dass das play
Skript in Ihrem bin
Verzeichnis 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 .playrc
in jedes Projekt-Stammverzeichnis eine Datei mit der Aufschrift
export PATH = " play_dir_for_this_project ": "$ PATH"
und legen Sie eine .playrc
Datei 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-dir
das die Binärdateien für dieses Projekt enthält. Es ist jedoch leicht zu vergessen, dieses Skript zu Beginn einer Programmiersitzung aufzurufen.