1

因此,我正在尝试创建一个脚本,该脚本可以同时启动urxvt终端并获取venv/bin/activatepython 环境,如下所示:

virtualenv -p /usr/bin/python2.7 /tmp/venv;


urxvt -e sh -c "bash -c 'source /tmp/venv/bin/activate'; bash"

由于某种原因,我无法让它工作。

有谁知道实现这一目标的另一种方法?

4

2 回答 2

0

命令的问题

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 和等待。节省了几个处理器周期和几个字节的内存。

于 2019-03-22T14:29:07.807 回答
0

通过将其更改为解决它:

urxvt -e bash -c "source /tmp/venv/bin/activate; sh"

我不确定为什么会这样。

于 2019-03-22T08:29:58.963 回答