Ich habe diese Frage und Antwort gelesen , aber sie passt nicht zu meinem Problem, obwohl sie ähnlich ist.
Ich schreibe ein Skript (cpj), mit dem eines meiner aktuellen Projekte gestartet wird. Ich habe ungefähr 5 von ihnen. Wenn ich tippe
$ cpj blah
Ich möchte, dass das aktuelle Arbeitsverzeichnis in das bla-Projektverzeichnis (das ich in $ PROJDIR habe) geändert wird, und ich möchte, dass emacsclient die Hauptdatei für dieses Projekt öffnet (die ich in $ MAINFILE halte).
Die von mir zitierte Frage besagt, dass Sie die Umgebung der Shell, in der das Skript ausgeführt wird, nicht direkt ändern können, aber Sie können ein Skript als Quelle verwenden, und dies wird auch der Fall sein.
Um dies zu testen, habe ich ein Shell-Skript (chcwd) geschrieben, das eine Zeile enthält:
cd $1
Wenn ich über die Befehlszeile Folgendes tue:
$ . chcwd $PROJDIR
Mein aktuelles Arbeitsverzeichnis ändert sich nach Wunsch. Wenn ich andererseits aus meinem cpj-Skript dieselbe Zeile habe:
. chcwd $PROJECT
Das aktuelle Arbeitsverzeichnis der Shell wird nicht geändert. Mir ist klar, dass ich 2 Skripte (cpj und dann chcwd) ausführe und so 2 Shells erstelle, aber ich sehe keine Möglichkeit, das zu tun, was ich will. Kann mir jemand zeigen, wie ich mein Ziel erreichen kann?