Я прочитал этот вопрос и ответ, но он не подходит для моей проблемы, даже если он похож.
Я пишу скрипт (называется cpj), который запустит один из моих текущих проектов. У меня около 5 из них. Когда я печатаю
$ cpj blah
Я хочу, чтобы текущий рабочий каталог изменился на каталог проекта blah (который я храню в $ PROJDIR), и я хочу, чтобы emacsclient открыл основной файл для этого проекта (который я держу в $ MAINFILE).
Приведенный мной вопрос говорит о том, что вы не можете напрямую изменить среду оболочки, в которой выполняется сценарий, но вы можете создать сценарий, и он это сделает.
Чтобы проверить это, я написал сценарий оболочки (называемый chcwd), который имеет одну строку:
cd $1
Если из командной строки я делаю:
$ . chcwd $PROJDIR
мой текущий рабочий каталог будет меняться по желанию. Если, с другой стороны, из моего сценария cpj у меня есть такая же строка:
. chcwd $PROJECT
это не изменит текущий рабочий каталог оболочки. Я понимаю, что я запускаю 2 сценария (cpj, а затем chcwd) и таким образом создаю 2 оболочки, но не вижу способа выполнить то, что я хочу. Может кто-нибудь показать мне, как достичь своей цели?