"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

관련 정보