「python」が引数なしで実行される場合にのみ、「python」を「ipython」としてエイリアスする

「python」が引数なしで実行される場合にのみ、「python」を「ipython」としてエイリアスする

「python」が引数なしで実行されている場合は、「python」を「ipython」としてのみエイリアスを指定するエイリアス(〜/ .zshrcに)を持つ方が良いと思います(そうでなければプログラムは起動しません)。まず、エイリアスで「引数なし」をどのように表現しますか?第二に、これについてどう思いますか?

答え1

定義によると、シェルエイリアスは条件付きで使用できる方法を提供しません。これは、インタラクティブなプロンプトを介して実行するすべてに適用されます。

これを達成するために関数を使用することができます。 (よりBashでいつエイリアスを使用し、いつスクリプトを使用し、いつ関数を作成しますか?これがなぜ違うのかを学びましょう。 )

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

シェルのrcファイルにある内容のため、シェルはバイナリを直接実行するのではなく、この関数を実行します。最初の引数が空の場合はipythonがトリガーされ、そうでない場合はすべての引数がパス内のPythonバイナリに渡されます(関数ではcommandなくバイナリが強制的に実行され、再帰自体が発生することを参照してください)。

答え2

zshエイリアスでこれを行うことができるかどうかはわかりませんが、この小さなシェルスクリプトを~/binasに貼り付けてみてはいかがですかpython

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

関連情報