Unix:链接命令

时间:2013-02-17 05:20:16

标签: unix cd chain

我已经了解到';'相当于命令行中的“enter”。但我有这种情况。

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

  
    

cd ../

  
当然,

将我带到A.然后我做:

  
    

cd C

  

带我去C.

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

  
    

(cd ../; cd C)

  

我还留在B.发生了什么事?为什么不把我带到C?

2 个答案:

答案 0 :(得分:3)

尝试这样做:

cd .. && cd C

或者,如果删除括号,原始命令应该有效:

cd ../ ; cd C

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

答案 1 :(得分:3)

执行( 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