bashrc에 정의된 함수가 포함된 env 명령

bashrc에 정의된 함수가 포함된 env 명령

내 기능이 있습니다 ~/.bashrc.

foo () { echo $FOO }

이제 다음과 같이 작동합니다.

$ source ~/.bashrc
$ setenv FOO "yes"
$ foo
yes

하지만 그렇지 않습니다:

$ env FOO="no" foo
foo: no such file or directory

GNU bash, 버전 4.2.46(2)-릴리스(x86_64-redhat-linux-gnu)

답변1

그래서 당신은 이것을 가지고 있습니다 :

$ foo() { echo "$FOO"; }
$ FOO=bar foo
bar

그래서:

$ env FOO=bar foo
env: foo: No such file or directory

env명령을 어디서 찾을 수 있나요? info man성명:

문자 "="를 포함하지 않는 첫 번째 피연산자는 호출할 프로그램을 지정하며 "PATH" 환경 변수에 대해 검색됩니다.

잘. 글쎄, foo그것은 bash 함수이므로 bash를 호출하면 어떻게 될까요?

$ env FOO=bar bash -c foo
bash: foo: command not found

아, 잠깐만요. 함수를 ~/.bashrc에 정의하셨습니다.6.2 Bash 시작 파일Bash 매뉴얼에서 쉘이 .bashrc를 다음과 같이 소스로 제공한다는 것을 알 수 있습니다.인터렉티브껍데기:

$ env FOO=bar bash -ic foo
bar

시작하자.

관련 정보