结束bash脚本后保持目录更改

ast*_*nic 8 bash shell cd

我的bash脚本:

#!/bin/bash
cd /tmp
Run Code Online (Sandbox Code Playgroud)

在运行我的脚本之前:

pwd: /
Run Code Online (Sandbox Code Playgroud)

运行我的脚本后:

pwd: /
Run Code Online (Sandbox Code Playgroud)

运行后我的脚本通过采购它:

pwd: /tmp
Run Code Online (Sandbox Code Playgroud)

如何在没有采购脚本的情况下保持脚本的路径?

Ign*_*ams 13

你不能.对当前目录的更改仅影响当前进程.


Max*_*yko 6

让我详细说明一下:

运行脚本时,bash会为其创建一个新进程,对当前目录的更改只会影响该进程.

在您获取脚本时,脚本由您正在运行的shell直接执行,而不创建额外的进程,因此对主shell进程可以看到对当前目录的更改.

因此,正如伊格纳西奥指出的那样,这是不可能完成的


Wil*_*ell 5

伊格纳西奥是正确的。然而,作为一个令人发指的黑客(完全不明智,这真的应该让我至少投 10 票),你可以在完成后执行一个新的 shell

#!/bin/bash
...
光盘 /
执行bash