서브쉘에서 -n을 활성화하는 것을 잊지 마세요

서브쉘에서 -n을 활성화하는 것을 잊지 마세요

에서 검색 할 수 echo built-in있도록 비활성화했습니다 . 나는 이것을 위해 명령을 사용했습니다. 아래를 참조하세요.echo$PATHenable -n

$ type echo
echo is a shell builtin
$ enable -n echo
$ type echo
echo is /bin/echo

echo하지만 현재 쉘에서 하위 쉘을 열면 내장된 쉘이 다시 사용됩니다. 아래를 참조하세요.

$ type echo
echo is /bin/echo
$ bash
$ # Now I am in child shell
$ type echo
echo is a shell builtin

echo서브셸에서도 이 설정이 발견 되도록 $PATH(즉, enable -n echo유효한 상태로 유지) 서브셸에서 이 설정을 보존할 수 있는 방법이 있습니까 ?

답변1

예, 두 가지 방법이 있습니다. 하나는 대화형이고 다른 하나는 비대화형 bash 셸입니다.

대화형 bash 셸의 경우 명령을 파일 enable -n echo에 넣으세요 $HOME/.bashrc. 모든 대화형 쉘은 외부 에코를 사용합니다.

그래요아니요비대화형 쉘에 대해 이 작업을 수행하는 것이 좋지만 이를 수행하려면 BASH_ENV다음 줄을 포함하도록 환경 변수를 설정해야 합니다 enable -n echo. 모든 비대화형 bash 쉘은 BASH_ENV 파일에 의해 명명된 파일을 실행하므로 외부 에코.

답변2

("enable -n")은 다음과 같습니다.bash 관련 기능. 당신은 넣을 수 있습니다

enable -n echo

예를 들어 해당 쉘 초기화 스크립트에서 ~/.bashrc호출하는 모든 쉘에 영향을 미치도록 합니다.

관련 정보