仅当“python”不带参数运行时才将“python”别名为“ipython”

仅当“python”不带参数运行时才将“python”别名为“ipython”

我认为最好有一个别名(在 ~/.zshrc 中),仅当“python”在没有参数的情况下运行时将“python”别名为“ipython”(否则程序将无法启动)。首先,如何在别名中表达“without args”?其次,你对此有何看法?

答案1

根据定义,Shell 别名不提供任何有条件地使用它们的方法。它们适用于您通过交互式提示运行的任何内容。

您可以使用函数来实现这一点。(参见在 Bash 中,何时使用别名、何时使用脚本以及何时编写函数?了解更多关于为什么这是不同的信息。)

function python () {
    test -z "$1" && ipython || command python "$@"
}

shell 的 rc 文件中的某些内容将导致 shell 运行此函数而不是直接运行二进制文件。如果第一个参数为空,它将为您触发 ipython,否则它将把所有参数传递给路径中的任何 python 二进制文件(请注意,使用 来command强制执行二进制文件而不是函数,并导致递归本身)。

答案2

不确定是否可以在 zsh 别名中执行此操作,但为什么不将这个小 shell 脚本粘贴到您的~/binas中python

#!/bin/bash
if test -z "$1"; then
    exec /usr/bin/ipython
else
    exec /usr/bin/python "$@"
fi

相关内容