스크립트를 해석할 때 shift
위치 매개변수를 사용하거나 조작 할 수 있습니다.set --
어떻게 바꿀 수 있나요 $0
?
답변1
5보다 크거나 같은 Bash에서는 $0
다음과 같이 변경할 수 있습니다.
$ cat bar.sh
#!/bin/bash
echo $0
BASH_ARGV0=lol
echo $0
$ ./bar.sh
./bar.sh
lol
ZSH는 다음에 대한 직접 할당도 지원합니다 0
.
$ cat foo.zsh
#!/bin/zsh
echo $0
0=lol
echo $0
$ ./foo.zsh
./foo.zsh
lol
답변2
Stephane이 이미 언급한 것 외에도 제가 생각할 수 있는 유일한 다른 방법은 sh
프로세스를 호출하는 것입니다. 즉, 함수가 스크립트일 수도 있다는 의미입니다. 하지만 여전히 관심이 있다면:
fn() { sh -c "$(cat)" arg0 "$@" ; } <<\FNDEF
echo "My argv0 is $0 and my positionals are..."
printf %s\\n "$@"
#END
FNDEF
fn arg1 arg2 arg3
###OUTPUT###
My argv0 is arg0 and my positionals are...
arg1
arg2
arg3
그러나 나는 이것이 그다지 유용하다고 생각하지 않습니다.