내 기능이 있습니다 ~/.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
시작하자.