2

我知道';' 相当于命令行中的“输入”。但是我有这种情况。

我的目录具有以下配置:目录 A 包含目录 B 和 C。当前在目录 B 中。我执行以下操作:

光盘../

当然,这会把我带到 A。然后我做:

CDC

这把我带到了C。

但是,如果我链接这两个命令,再次从 B 开始:

(cd ../ ; cd C)

我还留在B。怎么了?为什么不带我去C?

4

2 回答 2

4

执行时启动的进程( cd ../; cd C)有自己的环境,因此也有自己的当前工作目录。这在下面可以证明:

dogface@computer ~/A/B
$ ( cd .. ; pwd ; cd C; pwd )
/home/dogface/A
/home/dogface/A/C

dogface@computer ~/A/B
$ pwd
/home/dogface/A/B

现在尝试不使用 '(' 和 ')' ...

dogface@computer ~/A/B
$ cd .. ; cd C

dogface@computer ~/A/C
$ pwd
/home/dogface/A/C
于 2013-02-17T05:24:49.430 回答
3

尝试这样做:

cd .. && cd C

或者,如果您删除括号,您的原始命令应该可以工作:

cd ../ ; cd C

括号会导致命令在子 shell 中执行,这就是您看不到目录更改的原因。有关更多详细信息,请参见此处

于 2013-02-17T05:22:28.483 回答