Pushd가 git 별칭에서 올바르게 확장되지 않습니다.

Pushd가 git 별칭에서 올바르게 확장되지 않습니다.

나는 이 명령을 사용하는 git 별칭을 작성 중입니다 pushd. 그러나 명령이 올바르게 확장되지 않는 것 같습니다.


운영 체제

편집하다 Windows 10의 WSL에서 우분투를 실행하고 있습니다.

$ uname -a
Linux PowerSpecX251 4.4.0-19041-Microsoft #1237-Microsoft Sat Sep 11 14:32:00 PST 2021 x86_64 x86_64 x86_64 GNU/Linux

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.7 LTS
Release:        16.04
Codename:       xenial

질문/문제

나는 이 구문을 사용하여 서브셸과 여러 명령을 처리할 수 있는 git 별칭에 대한 복잡한 스크립트를 만듭니다.

diff-stat = ! "f() { git diff --stat=$(tput cols) $1 ; }; f"
scrub = ! "f() { git reset --hard; git clean -f -f -d; }; f"

그러나 해당 명령을 사용하여 별칭을 생성하면 오류가 발생합니다 pushd. 디렉터리에 대한 매개변수가 올바르게 전달되지 않는 것 같습니다.

$ grep pushdtest .gitalias
pushdtest = ! "f() { pushd /home; popd; }; f"

$ git pushdtest
 f() { pushd /home; popd; }; f: 1:  f() { pushd /home; popd; }; f: pushd: not found
 f() { pushd /home; popd; }; f: 1:  f() { pushd /home; popd; }; f: popd: not found
fatal: While expanding alias 'pushdtest': ' f() { pushd /home; popd; }; f': No such file or directory

나는 성공하지 못한 채 따옴표를 추가하려고 시도했습니다.

$ git pushdtestquotes
 f() { pushd '/home'; popd; }; f: 1:  f() { pushd '/home'; popd; }; f: pushd: not found
 f() { pushd '/home'; popd; }; f: 1:  f() { pushd '/home'; popd; }; f: popd: not found
fatal: While expanding alias 'pushdtestquotes': ' f() { pushd '/home'; popd; }; f': No such file or directory

pushd이 명령을 올바르게 사용하는 git 별칭을 작성하는 방법은 무엇입니까 ?

답변1

지원 /bin/sh하지 않기 때문에 실패할 수 있습니다 pushd.popd예를 들어이것이 대시입니다.)

사용할 셸을 명시적으로 지정하여 pushd별칭에서 사용할 수 있는지 확인할 수 있습니다.popd

pushdtest = !bash -c "'f() { pushd /home; popd; }; f'"

관련 정보