我正在大量使用pipenv(Python)和tmux。我的每个项目都有自己的pipenv环境,我喜欢在此环境中启动tmux,例如,运行以下命令:
pipenv run tmux
这对于我运行此命令的第一个项目来说效果很好。但是,当我为第二个项目运行它时(第一个tmux会话仍处于活动状态),第二个tmux会话中的新窗格将从第一个tmux会话中的pipenv环境开始。
确切地说:第二个tmux会话的初始窗格不会发生此问题,只有在我打开新窗格时才会出现。
有什么想法吗?
启动tmux服务器时会设置全局环境,并且该环境用于所有窗格,大概pipenv
需要一些东西才能在环境中有所不同。您将需要弄清楚将要设置的内容。
然后您有几个选择:
使用-L
来使用不同的tmux服务器而不是不同的tmux会话,因此每个服务器都具有从其开始的环境。但是,您最终可能会拥有许多tmux服务器。
将所需的pipenv
放入tmux update-environment
选项,以便在创建会话时将其复制到会话环境中。请注意,它也将在附加时复制(但显然,这只会影响附加后创建的窗格)。
在新窗格中自行配置tmux内的环境,如何执行此操作将取决于pipenv
具有哪些功能。我不知道如果只是一个环境变量,那可能很简单。
new-window
和split-window
具有用于显式设置环境变量的-e
标志,但是不幸的是,它也从未扩展到new-session
。您也许仍然可以使用-e
创建第二个窗口,然后杀死第一个窗口。