我有一个 shell 脚本,它会更改目录然后运行。我希望脚本终止后目录更改会冒泡到命令提示符中。
因此,我用以下方法运行它:
. script
但是,现在当脚本终止时,整个窗口都会终止。有办法解决这个问题吗?
我的shell是bash。
答案1
在 Mac 中有两种方法可以解决这个问题
A> 进入终端的首选项,选择[常规],然后取消选中“如果 shell 正常退出则关闭窗口”复选框。
B> 将你最喜欢的文本编辑器指向 ~/Library/Preferences/com.apple.Terminal.plist
查找行:
<键> ShellExitAction</键> <整数>1</整数>
将 1 更改为 2 并重新启动终端应用程序。
B 基本与 A 相同,但是手动完成。
答案2
是否script
包含exit
语句?请记住,点(source)在当前 shell 中运行您的代码。因此,如果它包含exit
,则您的当前 shell 将退出。您可能需要检查脚本并将任何内容更改exit
为return
。
您可能能够检测到来源(您想要执行的位置return
)和运行(您可能想要的位置exit
)
[[ $BASH_SOURCE != $0 ]] && echo 'running sourced ...'