나는 이 명령을 사용하는 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'"