Development Tip

sh의 소스 대체

yourdevel 2020. 12. 12. 12:31
반응형

sh의 소스 대체


환경 변수를 설정해야합니다. 일반적으로

source script.sh

그러나 지금은 부팅 프로세스 중에 자동화하고 있으며 기본적으로 sh셸을 사용 하는 루트 부팅처럼 보입니다 . 이 스크립트를 sh어떻게 소싱 합니까?


점 명령 ' .'은 C 쉘 (및 Bash) source명령 과 동일합니다 . POSIX (참조 dot)에 의해 지정되고 Bourne 및 Korn 쉘 (및 zsh, 나는 믿습니다)에서 지원합니다.

. somefile

쉘은를 사용하여 파일을 $PATH찾지 만 파일은 실행 가능하지 않고 읽을 수만 있어야합니다.

아래 설명에서 언급했듯이 파일의 상대 또는 절대 경로 이름을 지정할 수 있습니다. 슬래시가 포함 된 이름은를 사용하여 검색되지 않습니다 $PATH. 그래서:

. /some/where/somefile
. some/where/somefile
. ./somefile

모든 찾기 위해 사용될 수있다 somefile(당신이 바꿀 수 있다면이 세 가지 특정 위치에 존재하는 경우 .ls -l나열된 파일 참조).

세계의 발판이 단결! 예, 현재 디렉토리는, 루트 디렉토리의 경우 /some/where/somefile./some/where/somefile같은 파일을 참조 것 - 역할을, 심지어 기호 또는 하드 링크,없는 (그래서 것 - 같은 실제 경로 ../../some/where/somefile).


tl; drsh(과 반대 bash) 인수에는 source ./script.sh,뿐만 아니라 슬래시 :가 포함되어야합니다 source script.sh. script.sh에서 찾을 수 없는 경우 PATH.

Dot ( .) 명령은 bashsh. 또한 bash별칭을 source. 에서 bash수동 :

https://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html#index-source

출처

source filename

의 동의어입니다 .(Bourne Shell Builtins 참조).

https://www.gnu.org/software/bash/manual/html_node/Bourne-Shell-Builtins.html#index-_002e

. (마침표)

. filename [arguments]

filename현재 셸 컨텍스트 인수에서 명령을 읽고 실행합니다 . 경우 filename슬래시를 포함하지 않는의 PATH변수는 파일 이름을 찾는 데 사용됩니다. Bash가 POSIX 모드 filename가 아닌 경우 에서 찾을 수없는 경우 현재 디렉터리를 검색합니다 $PATH.

에서 POSIX :

file포함되지 않은 경우 쉘은에 지정된 검색 경로를 사용하여 PATH파일이 포함 된 디렉토리를 찾습니다. 그러나 일반 명령 검색과 달리 도트 유틸리티로 검색 한 파일은 실행 가능할 필요가 없습니다.

참고 URL : https://stackoverflow.com/questions/4732200/replacement-for-source-in-sh

반응형