如果将“ipython”命令设为别名,则 IPython 子命令将不起作用

如果将“ipython”命令设为别名,则 IPython 子命令将不起作用

我已更改问题标题以符合问题的实际原因。

在我的 14.04 设置中,ipython的子命令不起作用:

$ ipython locate
[TerminalIPythonApp] WARNING | File not found: u'locate'

这类似于另一个问题ipython来自 Ubuntu 和 IPython 的早期版本。我拥有Ubuntu 14.04 的“原版” 。

Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
Type "copyright", "credits" or "license" for more information.

IPython 1.2.1 -- An enhanced Interactive Python.

例如,我发现调用ipython2.7 locate是有效的,这是目前的一种解决方法,但它会生成一个警告:

$ ipython2.7 locate
/usr/lib/python2.7/dist-packages/IPython/frontend.py:30: UserWarning: The top-level `frontend` package has been deprecated. All its subpackages have been moved to the top `IPython` level.
  warn("The top-level `frontend` package has been deprecated. "
/home/whoever/.config/ipython

有没有一种好的方法来解决这个问题?

答案1

当这确实是飞行员失误时,我觉得自己“回答”自己的问题有点愚蠢。另一方面,其他人可能也遇到过和我一样的问题,忘记了我们巧妙地为一个常用的 shell 命令创建了别名,然后想知道为什么它不再像宣传的那样工作。这个问题困扰了我好几次。

如果您的 ~/.bash_profile 或 ~/.bashrc 文件中有“别名”命令,并且它们无法按预期工作,则解决方案是尝试通过其显式路径调用该程序。 在我的例子中,

ipython somecommand somescript.py

触发 shell 的别名扩展,但是

/usr/bin/ipython somecommand somescript.py

才不是。

答案2

为了避免在 bash 中对别名进行 shell 扩展,你可以使用以下任一方式调用它

\ipython whatever

或者

"ipython" whatever

感谢您对问题的定位(我的意思是别名)。

相关内容