因此,我正在尝试创建一个脚本,该脚本可以同时启动urxvt
终端并获取venv/bin/activate
python 环境,如下所示:
virtualenv -p /usr/bin/python2.7 /tmp/venv;
urxvt -e sh -c "bash -c 'source /tmp/venv/bin/activate'; bash"
由于某种原因,我无法让它工作。
有谁知道实现这一目标的另一种方法?
因此,我正在尝试创建一个脚本,该脚本可以同时启动urxvt
终端并获取venv/bin/activate
python 环境,如下所示:
virtualenv -p /usr/bin/python2.7 /tmp/venv;
urxvt -e sh -c "bash -c 'source /tmp/venv/bin/activate'; bash"
由于某种原因,我无法让它工作。
有谁知道实现这一目标的另一种方法?
命令的问题
urxvt -e sh -c "bash -c 'source /tmp/venv/bin/activate'; bash"
是第一个 bash 源activate
脚本然后退出,因此第二个 bash 不会在被激活的 venv 中启动。-c '…'
在激活 venv 的情况下运行第二个 bash :
urxvt -e sh -c "exec bash -c 'source /tmp/venv/bin/activate && exec bash'"
PS。我喜欢用它exec
来替换当前的 shell,而不是让它 fork 和等待。节省了几个处理器周期和几个字节的内存。
通过将其更改为解决它:
urxvt -e bash -c "source /tmp/venv/bin/activate; sh"
我不确定为什么会这样。