有几种方法可以执行脚本。我知道的有:
/path/to/script # using the path (absolute or relative)
. script # using the . (dot)
source script # using the `source` command
Run Code Online (Sandbox Code Playgroud)
有没有其他办法?它们之间有什么区别?在某些情况下,我必须使用一种而不是另一种吗?
我已经阅读了这个问题和答案,但它并不适合我的问题,即使它很相似。
我正在编写一个脚本(称为 cpj),它将启动我当前的项目之一。我有大约 5 个。当我打字
$ cpj blah
我希望当前工作目录更改为 blah 项目目录(我保存在 $PROJDIR 中),并且我希望 emacsclient 打开该项目的主文件(我保存在 $MAINFILE 中)。
我引用的问题说你不能直接改变运行脚本的 shell 的环境,但你可以获取一个脚本,它会这样做。
为了测试这一点,我编写了一个 shell 脚本(称为 chcwd),其中有一行:
cd $1
如果,从命令行我做:
$ . chcwd $PROJDIR
我当前的工作目录将根据需要更改。另一方面,如果从我的 cpj 脚本中,我有相同的行:
. chcwd $PROJECT
它不会改变 shell 的当前工作目录。我意识到我正在运行 2 个脚本(cpj,然后是 chcwd),因此创建了 2 个 shell,但我看不出有什么办法可以完成我想要的。谁能告诉我如何实现我的目标?