gpt4 book ai didi

python - 在 `cd` 命令上运行 bash 脚本

转载 作者:IT王子 更新时间:2023-10-29 01:04:45 27 4
gpt4 key购买 nike

我是 python 开发人员,我最常使用 buildout用于管理我的项目。在这种情况下,我不需要运行任何命令来激活我的依赖环境。

但是,有时我会使用 virtualenv,因为对于这种特殊情况,构建过于复杂。

最近开始玩ruby。并注意到非常有用的功能。当我 cd 进入项目文件夹时,环境会自动改变。它与 rvm.rvmrc 文件有某种关系。

我只是想知道是否有办法在不同的 bash 命令上 Hook 某些脚本。因此,当 cd 进入项目文件夹时,我可以自动 workon environment_name

所以逻辑很简单:

当您使用 folder_name 在项目中 cd 时,脚本应该运行 workon folder_name

最佳答案

Unix shell 的一个特性是它们允许您创建 shell 函数,这与其他语言中的函数非常相似;它们本质上是命名的命令组。例如,您可以编写一个名为 mycd 的函数,它首先运行 cd,然后运行其他命令:

function mycd () {
cd "$@"
if ... ; then
workon environment
fi
}

("$@" 扩展为您传递给 mycd 的参数;因此 mycd/path/to/dir 将调用cd/path/to/dir.)

作为一种特殊情况,shell 函数实际上取代了同名的内置命令;因此,如果您将函数命名为 cd,它将在您运行 cd 时运行,而不是内置的 cd。在那种情况下,为了让函数调用内置的 cd 来执行实际的目录更改(而不是调用自身,导致无限递归),它可以使用 Bash 的 builtin builtin 调用指定的内置命令。所以:

function cd () {
builtin cd "$@" # perform the actual cd
if ... ; then
workon environment
fi
}

(注意:我不知道你识别项目目录的逻辑是什么,所以我把它留作 ... 给你填写。如果你在评论中描述你的逻辑,我会相应地进行编辑。)

关于python - 在 `cd` 命令上运行 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17620875/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com