【问题标题】:fish: check if running in venvfish:检查是否在 venv 中运行
【发布时间】:2021-12-09 11:47:01
【问题描述】:

我怎么知道我是否在鱼中奔跑?

我想在我的~/.config/fish/config.fish 中包含以下内容:

if status is-interactive
  cd $HOME/d/
end

但当我运行pipenv shell 时,我不希望它出现在cd

# does something like this exist ...?
if status is-interactive and not is-venv
  cd $HOME/d/
end

【问题讨论】:

  • 请解释一下您所说的“它把我搞砸了”是什么意思。发生了什么事让你感到惊讶?你期待什么?您使用的是什么版本的 Fish 和 pipenv 命令?如果 pipenv 正在创建一个新的交互式 Fish shell,而您不希望它使用 cd,那么您应该使用不同的测试,或者完全消除该代码。

标签: python-venv fish


【解决方案1】:

使用set 似乎有效:

if status is-interactive; and not set -q VIRTUAL_ENV
  cd $HOME/d/
end

谢谢法霍!很有帮助

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
  • and 是一个新命令,所以你需要在它前面添加一个分号:if status is-interactive; and not set -q VIRTUAL_ENV。或者,在 fish >= 3.0 中使用 &&: if status is-interactive && not set -q VIRTUAL_ENV
  • 这意味着您的“工作”检查有问题 - 它检查是否有任何变量 $VIRTUAL_ENV$and$status$is-interactive(这不是一个有效的变量名)已设置。它从不检查它是否是交互式的。
  • 您的编辑修复了工作检查的情况,但非工作检查因同样的原因而失败 - and 之前没有分号。这就是破坏它的原因。
猜你喜欢
  • 2016-08-09
  • 2012-09-05
  • 1970-01-01
  • 1970-01-01
  • 2021-10-27
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多