我想做这样的事:
(cd "$1" && pwd && many && other && commands) < echo "../path"
它应该接受提供的参数并将它们传递给子 shell。然后子 shell 应该执行。
重要的是传递的参数位于命令行的末尾,以便于轻松更改,因为当用户按下向上箭头时,光标位于命令的末尾。
答案1
bash 子 shell 将继承父 shell 的变量(但不会修改它们!)。
一种简单的方法是使用您在父 shell 中定义和修改的变量来定义一系列命令。
MyTempVar="FirstPath"
(cd "$MyTempVar" && pwd && many && other && commands) && unset MyTempVar
MyTempVar="NewPath"
!-2
- 使用
!-2
,如果启用了历史记录选项,您将执行历史记录中的倒数第二条命令。它是内置bash 的历史。 - 更安全的方法是启用它
histverify
在shopt -s histverify
处理历史记录中的命令之前进行视觉确认。 - 再次安全,它是Up++ Up。Enter
- 如果需要,您
unset MyTempVar
可以选择取消设置该变量。MyTempVar
您甚至可以创建一个函数或脚本并将变量传递给它们。例如
TTT(){ (A="$1"; cd "$A" && pwd ;) }
然后调用
TTT MyPath