相关疑难解决方法(0)

执行shell脚本的不同方式

有几种方法可以执行脚本。我知道的有:

/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)

有没有其他办法?它们之间有什么区别?在某些情况下,我必须使用一种而不是另一种吗?

executable shell-script

45
推荐指数
3
解决办法
7万
查看次数

使用脚本更改当前工作目录

我已经阅读了这个问题和答案,但它并不适合我的问题,即使它很相似。

我正在编写一个脚本(称为 cpj),它将启动我当前的项目之一。我有大约 5 个。当我打字

$ cpj blah

我希望当前工作目录更改为 blah 项目目录(我保存在 $PROJDIR 中),并且我希望 emacsclient 打开该项目的主文件(我保存在 $MAINFILE 中)。

我引用的问题说你不能直接改变运行脚本的 shell 的环境,但你可以获取一个脚本,它会这样做。

为了测试这一点,我编写了一个 shell 脚本(称为 chcwd),其中有一行:

cd $1

如果,从命令行我做:

$ . chcwd $PROJDIR

我当前的工作目录将根据需要更改。另一方面,如果从我的 cpj 脚本中,我有相同的行:

. chcwd $PROJECT

它不会改变 shell 的当前工作目录。我意识到我正在运行 2 个脚本(cpj,然后是 chcwd),因此创建了 2 个 shell,但我看不出有什么办法可以完成我想要的。谁能告诉我如何实现我的目标?

shell cd-command

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

cd-command ×1

executable ×1

shell ×1

shell-script ×1