自动在新终端选项卡中运行 virtualenv

pol*_*eme 7 command-line customization bash virtualenv

我正在使用 virtualenv,所以首先我必须说

source some/long/path/bin/activate
Run Code Online (Sandbox Code Playgroud)

有时(事实上,很多时候)我想在终端中创建另一个选项卡,编辑另一个脚本,或者运行 django shell 等。在创建另一个选项卡之后我不得不再说一遍source some/long/path/bin/activate。事实上,这很无聊。

有什么方法可以强制终端自动运行这个神奇的单词吗?所以如果我输入CtrlShiftT在终端中输入,并且在当前选项卡中运行 virtualenv,则终端应该在新选项卡中打开完全相同的 virtualenv。

或者可能是完全不同的东西来解决这个问题。

ccp*_*zza 5

针对特定的终端模拟器

在创建新终端选项卡时自动运行命令将是您正在使用的特定终端的一项功能,与python或无关virtualenv

要获得更广泛的范围或答案,问题可能必须是如何为终端模拟器 xyz 自动运行 shell 命令。例如,您可以使用https://unix.stackexchange.com/a/3856/15312gnome-terminal中所述的自定义配置文件,但如果您决定切换到另一个终端或平台,则这是一个不可移植的解决方案。

另一方面,没有人希望被锁定到特定的终端应用程序,因此下一个选择将是更便携的方法。

定位 shell 初始化脚本

如果您控制选项卡中运行的 shell,则可以在 shell 初始化脚本中执行此操作。

例如,bash您可以在脚本中添加以下行~/.bashrc

if [[ -f .venv/bin/activate ]] ; then
    source .venv/bin/activate
fi 
Run Code Online (Sandbox Code Playgroud)

zsh片段添加到~/.zshrc.

.venv每当您创建新 shell 或打开新选项卡时,此代码片段都会检查当前路径中是否有文件夹并自动激活该 venv。如果您在未命名的文件夹中创建 virtualenvs,.venv则相应地调整脚本。

您可能还想覆盖,cd以便每当您cd进入 venv 时它都会自动激活:

下面是一个示例zsh

function cd() {
  builtin cd $1

  if [[ -f .venv/bin/activate ]] ; then
    source .venv/bin/activate
  fi
}
Run Code Online (Sandbox Code Playgroud)

减少打字virtualenvwrapper

具体来说virtualenv:您可能想尝试virtualenvwrapper,它可以帮助减少输入量,并通过为 virtualenv 文件夹提供自动完成功能来使管理环境变得更容易。

后台进程

最后,作为一种快速解决方法,您可以使用+暂停当前正在运行的进程(例如manage.py runserver) ,而不是使用相同的环境创建新选项卡,如果您想保持其运行,则可以选择运行以在后台恢复它,然后编辑并保存文件,并将原始进程带回前台。请参阅了解更多详细信息。Ctrzbgfg