我认为最好有一个别名(在 ~/.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 脚本粘贴到您的~/bin
as中python
:
#!/bin/bash
if test -z "$1"; then
exec /usr/bin/ipython
else
exec /usr/bin/python "$@"
fi