我已经阅读了这个问题和答案,但是即使是类似的问题也无法解决。
我正在编写一个脚本(称为cpj),它将启动我当前的项目之一。我大约有五个。当我键入
$ cpj blah
我希望当前工作目录更改为blah项目目录(我保存在$ PROJDIR中),并且我希望emacsclient打开该项目的主文件(我保存在$ MAINFILE中)。
我引用的问题是,您不能直接更改运行脚本的shell的环境,但是可以提供脚本的源代码,并且可以这样做。
为了测试这一点,我编写了一个shell脚本(称为chcwd),其中只有一行:
cd $1
如果从命令行执行:
$ . chcwd $PROJDIR
我当前的工作目录将根据需要更改。另一方面,如果从我的cpj脚本中获得同一行:
. chcwd $PROJECT
它不会更改外壳程序的当前工作目录。我意识到我正在运行2个脚本(cpj,然后是chcwd),因此创建了2个shell,但是我看不到要完成所需的任何方法。谁能告诉我如何实现我的目标?