【发布时间】:2020-12-30 16:06:27
【问题描述】:
我有这个脚本:
#!/bin/bash
cd ~/my-dir && bash && runall
我将此脚本添加到我的$PATH 中,当我运行此脚本时,它首先会做两件事。
- 它会更改当前目录并执行 bash,这样我的 shell 也会更改当前目录并且我可以在那里工作。
- 在此文件夹中运行
runall(另一个 shell 脚本)。
实际结果:
脚本成功更改了我当前的 shell 目录。
但是,runall 没有被执行。
预期结果:
脚本将我的当前shell目录更改为my-dir,然后执行runall
我该如何解决这个问题?
注意:
我知道我可以做到:
cd some-dir/ && runall
但这不会将我当前的会话更改为该目录。我还想更改我当前的 shell 目录。
原因:
我还想更改我当前的工作目录,以便在runall 执行后可以在那里运行其他手动命令。
【问题讨论】:
-
这根本不会改变你的“当前会话”。它正在启动一个新的外壳,而不是修改现有外壳的状态。如果你退出那个新的 shell,
runall将运行,然后你会回到你的旧 shell。 -
如果你想修改现有会话,脚本完全是错误的工具——改用函数。