쉘 함수와 별명이 하위 프로세스를 생성합니까?

쉘 함수와 별명이 하위 프로세스를 생성합니까?

쉘 함수와 별명이 하위 프로세스를 생성합니까? 아니면 모두 쉘 프로세스 내에서 실행됩니까?

답변1

아니요.

별칭은 해당 줄을 토큰으로 구문 분석하기 전에 특정 문자열을 하나 이상의 단어로 대체합니다. 쉘 컨텍스트를 변경할 필요가 없습니다.

Bash 매뉴얼로 시작하기쉘 기능:

셸 기능은 현재 셸의 컨텍스트에서 실행되며 이를 해석하기 위한 새 프로세스가 생성되지 않습니다.

함수를 구성하는 코드가 bash (…)(ksh는 아님)와 같이 실제로 하위 프로세스를 분기하지 않는 한. 중괄호 대신(또는 추가로) 괄호를 사용하여 함수를 정의할 수 있습니다.

시험:

#!/bin/bash
func(){ echo "$BASHPID"; }
fork()( echo "$BASHPID"; )
echo "$BASHPID"
func
fork

실행 시:

$ ./script
8731
8731
8753

포크 기능을 다음과 같이 이해하십시오.

fork(){
        ( echo "BASHPID" )
      }

관련 정보