
1 hzlez 2017 年 1 月 31 日 我理解,就和函数的入栈出栈一样,子 shell 调用结束,就回到你执行时的 current directory 了。 |
2 ikw 2017 年 1 月 31 日 via iPhone 有点没看明白,但是 cd 只是在脚本执行的子 shell 里换目录了,按说也是可以执行成功的 git 在 2.几以后的版本可以用 -C 指定目录 |
3 xpol 2017 年 1 月 31 日 via iPhone git 1.8.5+ 就可以 git -C <directory> ... 了。 |
5 wohenyingyu02 2017 年 1 月 31 日 via iPhone 你都知道是新开的 shell 了, cd 跳转的是新开的 shell 的当前目录,不是你正在看的 shell 啊, pwd 也是检查新开的 shell 当前目录,执行完关闭新开的 shell ,为何会影响你在使用的 shell 呢 |
6 larsenlouis 2017 年 1 月 31 日 #!/bin/bash cd "$(realpath "/cygdrive/b/")" ls |
7 wohenyingyu02 2017 年 1 月 31 日 via iPhone @wohenyingyu02 好比你开了两个 shell 窗口,你在其中一个 cd xxx 并不会影响另一个 |
8 yyai3 2017 年 1 月 31 日 subshell 继承原 shell 的环境变量和路径, subshell 里的 cd 及新增变量不会影响到原 shell |
9 ericgui OP @wohenyingyu02 哦,你这一解释我就明白了。 cd 之后新跳转的目录,只是我看不到而已。 |
10 ericgui OP |
11 ericgui OP |
12 KentY 2017 年 2 月 1 日 我的 pullall, 你可以参考. git 版本如果不是很老, 可以-C https://github.com/sk1418/myScripts/blob/master/shell/pullall.sh |
14 binarylu 2017 年 2 月 1 日 cd 不是命令,没有一个对应的 bin 程序, cd 是 shell 的关键字,由 shell 直接执行 |
16 hosiet 2017 年 2 月 1 日 via Android 我觉得直接把 cd 理解成系统调用比较好,直接对应 chdir(2),不是外部命令,只是运行中的 shell 改了改自己的工作目录而已。 |
17 owt5008137 2017 年 2 月 1 日 via Android 1. 当前目录属于环境(变量) 2. 除了内建命令外, shell 里执行一个程序都是新开子进程的(包括执行一个脚本文件) 3. 子进程的环境(变量)变化不会影响父进程。 你理解了这三条就明白为什么了 |
18 ericgui OP @owt5008137 谢谢,这次算是彻底明白了。非常感谢! |