如何阻止zsh脚本被暂停(tty输出)

Pet*_*991 5 linux scripting background zsh

我有一个zsh脚本,我想运行它,它也加载我的.zshrc文件.我相信我必须以交互模式运行我的脚本?

因此,我的脚本开始如下:

#!/bin/zsh -i

if [ $# = 0 ]
then
    echo "need command line paramter..."
    exit
fi
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在后台运行此脚本时,我的脚本将被暂停(即使我传入了正确数量的参数):

[1]  + suspended (tty output) 
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何制作一个可以在后台运行的脚本,它还会加载我的启动.zshrc文件?如果我必须将其置于交互模式,我怎样才能避免暂停tty输出问题?

谢谢

Cal*_*leb 6

不要使用交互模式作为哈希爆炸!

相反,如果需要,请在脚本中获取zshrc文件:

#!/bin/zsh
source ~/.zshrc
...
Run Code Online (Sandbox Code Playgroud)

为了将来参考,您可以使用disownbultin从shell中分离以前的后台作业,以便它不会被挂起或其他任何东西.然后可以关闭父shell而不影响该进程:

$ disown %1
Run Code Online (Sandbox Code Playgroud)

当您使用&!运算符而不是仅启动程序时,可以直接从命令行执行此操作&:

$ ./my_command &!
Run Code Online (Sandbox Code Playgroud)