当使用Bash脚本在后台执行命令时,可能会遇到“输入设备不是TTY”的问题,特别是在执行一些需要输入交互的命令时。这是因为Bash默认采用标准输入(stdin)作为输入设备,而后台执行时没有stdin。为了解决这个问题,可以使用以下两种方法之一:
command < /dev/null &
script -q /dev/null command &
以上两种方法都将stdin重定向到/dev/null,可以避免“输入设备不是TTY”的问题。其中第二种方法使用了pty(伪终端),可以保留命令输出到控制台的效果,同时也可以避免部分命令在没有tty时出现的其他问题。