【发布时间】:2019-08-24 09:32:17
【问题描述】:
我有一个带有 post_install 脚本的 deb 包,它应该创建一个 python 虚拟环境并在其上安装要求。问题是当用户按下ctrl+c、virtualenv 或pip 命令中断时,会打印一条错误消息并且执行下一个命令而不是运行陷阱处理程序。
我试图在后台运行virtualenv 获取它的 PID 并等待它执行,但它不起作用。
类似:
function sig_int(){
echo "exiting..."
kill -SIGINT $PID
exit 255
}
virtualenv -p python3 <somewhere> &
PID=$!
trap sig_int INT
wait $PID
脚本是这样的:
function sig_int(){
echo "exiting..."
# do some cleanup
exit 255
}
trap sig_int INT
virtualenv -p python3 <somewhere>
. <somewhere>/bin/activate
pip3 install req1
pip3 install req2
read -p "> Please enter username: " user
read -s -p "> Please enter password: " pass
...
脚本永远不会通过按ctrl+c 来运行陷阱功能。当 pip3 install 或 virtualenv 正在运行时按 ctrl+c 只会中断 pip3 或 virtualenv 并在读取块脚本时按 ctrl+c 继续执行。
【问题讨论】:
-
获取安装包的管理员配置首选项的正确方法是通过Debconf。
标签: linux bash virtualenv