스크립트 파일에서 Bash 함수를 호출하면 실패하지만 터미널에서 호출하면 성공합니다.

스크립트 파일에서 Bash 함수를 호출하면 실패하지만 터미널에서 호출하면 성공합니다.

$HOME/ulcwe/software_internal.shBash를 사용하여 Ubuntu 16.04에서 호출되지 않은 함수가 포함된 파일을 만들었습니다 . rse()파일의 소스는 ~/.bashrc자체적으로 가져오며 rse터미널 어디에서나 호출할 수 있으며 오류 없이 실행됩니다.

하지만 난 달리려고 해이 스크립트 파일36번째 줄에 대한 호출이 포함되어 있는데 rse다음 오류가 발생합니다.

36행: rse: 명령을 찾을 수 없습니다.

함수를 수동으로 호출하면( rseBash에서 입력 및 실행) 성공하지만 Bash 스크립트에서 호출하면 실패하는 이유는 무엇입니까? 스크립트에서 어떻게 성공적으로 호출할 수 있나요?

답변1

스크립트에서 함수를 사용할 수 있는지 확인해야 합니다. 이 작업은 두 가지 방법으로 수행할 수 있습니다.

  1. source함수 정의가 포함된 파일, 또는
  2. export스크립트 전에 함수를 호출합니다( export -f rse함수가 내보내집니다).

쉘 변수와 같은 함수는 스크립트에 의해 상속된 환경의 일부가 아닙니다. 환경 변수가 되려면 쉘 변수를 내보내야 하며, bash함수도 내보낼 수 있습니다.

내보낸 함수를 호출할 수 없습니다.어느프로세스를 진행하려면 다른 스크립트를 살펴보세요 bash.

관련 정보