명령어 이름을 직접 입력해도 되긴 할걸 아마도? 절대경로로 입력하는 이유는 명령어 탐색 경로에 없을수도 있고 alias에 등록되어 있으면 다른 명령어가 될 수도 있으니까 그런걸꺼야.
토끼주문(icyselec)2022-06-17 09:58
답글
그리고 셔뱅을 생략하는 구현체도 있어서 안써도 스크립트를 자동 인식하거나 알아서 잘 실행함. 그래도 있으면 좋은 이유가 호환성이랑 파일 이름에 확장자가 없을때 구분하기 용이함.
토끼주문(icyselec)2022-06-17 10:01
답글
밑에글처럼 #!/usr/bin/env 이런거 잘못 쓰면 계속 말도없이 삭제되네..
FIREKICK(firekick)2022-06-17 10:08
답글
보통 alias는 셸스크립트에는 적용안되는걸로 알고있었는데 #!에도 alias가 적용됨? 그리고 "/bin 아래 bash가 없을 가능성" vs "PATH에 bash가 없을 가능성" 하면 거의 둘다 0이나 마찬가지 아닐까 했음. 대충 절대경로 쓰고 안쓰고는 어떤 차이인지 조금 감이 오는데 env 쓰는 것들은 무슨 이유인지 전혀 모르겟다
FIREKICK(firekick)2022-06-17 10:11
답글
FreeBSD 같은건 usr bin bash, env는 잘 모르겠다
토끼주문(icyselec)2022-06-17 12:50
3,4번은 POSIX-compliant가 아니니까 쓰면 안된다 /use/bin/env 쓰는 이유는 Nix처럼 $SHELL이 bin/bash으로 고정된 게 아니라 자주 바뀌거나 fish처럼 아예 POSIX-compliant가 아닌 애들 지원하기 위해서임
익명(132.145)2022-06-17 11:34
답글
ㅇㅎ 3번 4번 지양하는 이유는 알겟음. 근데 /bin/ 아래 bash가 없을 가능성이나 /usr/bin/ 아래 env이 없을 가능성이나 그게 그거 아닌가 싶었는데 /usr/bin 아래 무조건 env가 있어야 한다는 POSIX 뭐시기라도 있는거임? nix 많이 안써봐서 nix에선 bin/bash는 고정안되있지만 /usr/bin/env는 고정되있는건가 싶음.
FIREKICK(firekick)2022-06-17 12:05
답글
Nix는 /bin/b.ash에 bash를 설치하지 않음. /bin/s.h나 /usr/bin/en.v는 그냥 공식 같은 거임 이게 쉴 스크립트라고 선언하는 거랑 같다
명령어 이름을 직접 입력해도 되긴 할걸 아마도? 절대경로로 입력하는 이유는 명령어 탐색 경로에 없을수도 있고 alias에 등록되어 있으면 다른 명령어가 될 수도 있으니까 그런걸꺼야.
그리고 셔뱅을 생략하는 구현체도 있어서 안써도 스크립트를 자동 인식하거나 알아서 잘 실행함. 그래도 있으면 좋은 이유가 호환성이랑 파일 이름에 확장자가 없을때 구분하기 용이함.
밑에글처럼 #!/usr/bin/env 이런거 잘못 쓰면 계속 말도없이 삭제되네..
보통 alias는 셸스크립트에는 적용안되는걸로 알고있었는데 #!에도 alias가 적용됨? 그리고 "/bin 아래 bash가 없을 가능성" vs "PATH에 bash가 없을 가능성" 하면 거의 둘다 0이나 마찬가지 아닐까 했음. 대충 절대경로 쓰고 안쓰고는 어떤 차이인지 조금 감이 오는데 env 쓰는 것들은 무슨 이유인지 전혀 모르겟다
FreeBSD 같은건 usr bin bash, env는 잘 모르겠다
3,4번은 POSIX-compliant가 아니니까 쓰면 안된다 /use/bin/env 쓰는 이유는 Nix처럼 $SHELL이 bin/bash으로 고정된 게 아니라 자주 바뀌거나 fish처럼 아예 POSIX-compliant가 아닌 애들 지원하기 위해서임
ㅇㅎ 3번 4번 지양하는 이유는 알겟음. 근데 /bin/ 아래 bash가 없을 가능성이나 /usr/bin/ 아래 env이 없을 가능성이나 그게 그거 아닌가 싶었는데 /usr/bin 아래 무조건 env가 있어야 한다는 POSIX 뭐시기라도 있는거임? nix 많이 안써봐서 nix에선 bin/bash는 고정안되있지만 /usr/bin/env는 고정되있는건가 싶음.
Nix는 /bin/b.ash에 bash를 설치하지 않음. /bin/s.h나 /usr/bin/en.v는 그냥 공식 같은 거임 이게 쉴 스크립트라고 선언하는 거랑 같다
https://man.openbsd.org/environ.7
path 참조
login될때 설정되는 default path가 있구나
유닉스에선 뭘 키든 path가 있어야됨. 궁금하면 execve 찾아보고 strace 써봐