我有一个脚本'myscript.sh',调用供应商脚本'供应商脚本.sh'。供应商脚本在前台运行屏幕。
我想在屏幕分离的情况下运行供应商脚本。如果可能的话我想在不破解的情况下做到这一点供应商脚本或者供应商_screenrc。
有没有办法做到这一点?
myscript.sh:
# some other commands
...
source vendorscript.sh
供应商脚本.sh:
# some other commands
...
exec screen -c vendor_screenrc
答案1
如果vendorscript.sh
不使用绝对路径来启动程序,您可以尝试在执行之前screen
操作。$PATH
这还假设$PATH
未在 内重置/操作vendorscript.sh
。
例如,我创建了一个目录/opt/vendor
并在其中创建了一个 shell 脚本,名为screen
:
#!/bin/bash
exec /usr/bin/screen -d -m "$@"
并在myscript.sh
:
#!/bin/bash
PATH="/opt/vendor:$PATH"
source vendorscript.sh
因为/opt/vendor
是第一个$PATH
,所以vendorscript.sh
将使用我的包装脚本而不是screen
二进制文件。根据man 1 screen
:
-d -m
以“分离”模式启动屏幕。这会创建一个新会话,但不会附加到它。这对于系统启动脚本很有用。
并且"$@"
传递原始调用中的剩余参数。