쉘 함수와 별명이 하위 프로세스를 생성합니까? 아니면 모두 쉘 프로세스 내에서 실행됩니까?
답변1
아니요.
별칭은 해당 줄을 토큰으로 구문 분석하기 전에 특정 문자열을 하나 이상의 단어로 대체합니다. 쉘 컨텍스트를 변경할 필요가 없습니다.
Bash 매뉴얼로 시작하기쉘 기능:
셸 기능은 현재 셸의 컨텍스트에서 실행되며 이를 해석하기 위한 새 프로세스가 생성되지 않습니다.
함수를 구성하는 코드가 bash (…)
(ksh는 아님)와 같이 실제로 하위 프로세스를 분기하지 않는 한. 중괄호 대신(또는 추가로) 괄호를 사용하여 함수를 정의할 수 있습니다.
시험:
#!/bin/bash
func(){ echo "$BASHPID"; }
fork()( echo "$BASHPID"; )
echo "$BASHPID"
func
fork
실행 시:
$ ./script
8731
8731
8753
포크 기능을 다음과 같이 이해하십시오.
fork(){
( echo "BASHPID" )
}