터미널이 쉘 스크립트 명령을 인식할 수 없습니다

터미널이 쉘 스크립트 명령을 인식할 수 없습니다

내 시스템의 프록시 설정을 업데이트하는 쉘 스크립트가 있습니다.

chmod +x filename.sh성공적으로 작동하는 명령을 실행해 보았습니다. 그런 다음 ./filename.sh터미널에서 실행했는데 성공적으로 실행되었습니다. 이 쉘 스크립트에는 몇 가지 도우미 메소드가 포함되어 있으며 이를 실행하려고 하면 가 표시됩니다 -bash: unload_proxy: command not found. 여기에 이미지 설명을 입력하세요.

여기에 이미지 설명을 입력하세요.

답변1

filename.sh정의를 포함하는 경우 또는 단축키를 unload_proxy사용해야 합니다 .source ./filename.sh. ./filename.sh

파일을 얻으면 현재 쉘 환경에서 평가되어 새로운 기능을 정의할 수 있습니다.

귀하의 예에서는 파일을 직접 실행*합니다(예:아니요출처), 사건의 순서는 다음과 같습니다.

  1. 이 설명의 목적에 따라 현재 셸의 복사본과 거의 같은 새 환경을 포함하는 새 bash 셸을 생성합니다(일부 옵션과 사물이 정의되는 방식에 따라 다름).

  2. 스크립트는 이 새로운 셸에서 실행되고 해당 환경에서 기능을 정의합니다.

  3. 스크립트가 종료되고 여기에 정의된 함수에 대한 새 셸도 종료됩니다.

  4. 제어권은 함수가 정의되지 않은 원래 셸로 반환됩니다.

로 실행하면 source ./filename.sh새 셸이 시작되지 않으므로 2단계만 발생하고 현재 셸에서 발생합니다.

* 파일이 올바른 것으로 가정셰르본, 예를 들어#!/usr/bin/env bash

관련 정보