2

在 golang(以及 bash 脚本)中,如果我更改当前工作目录(使用 os.Chdir)它可以工作,但是当程序终止时,工作目录会重置为程序启动时的位置。

这是有道理的,但我想做的是一个智能磁盘导航器(类似于我们古老而心爱的 ncd,“Norton Change Directory”)。

如何告诉二进制文件(或启动它的 shell 或其他)不要重置到以前的工作路径?

我想完全从 Go 二进制文件中实现这一点,而不需要修改 .bashrc 或 .zshrc (为了可移植性)

4

1 回答 1

9

每个进程的工作目录都是进程私有的。

你必须跳过循环来实现这一点。例如,您的程序可以编写一个脚本(文件),该脚本可以稍后在程序终止后从调用您的程序的脚本中执行。

另一种不那么老套的方法是:

$ cd $(prog)

prog 将新的 wd 写入标准输出的位置。

于 2013-06-10T14:37:17.917 回答