다음 내용이 포함된 "init" 파일이 있습니다.
#!/bin/sh
export PATH=$PATH:/home/me/morph_numsys/software/bin
이 bash 세션에 대해 해당 폴더의 경로를 설정하고 싶습니다. 그러나 스크립트를 실행해도 sh init
여전히 경로를 인식하지 못합니다. 하지만 그냥 라고 말하면 export PATH=$PATH:/home/me/morph_numsys/software/bin
잘 작동합니다. 이 작업을 수행하는 방법에 대한 아이디어가 있습니까?
저는 우분투와 xterm을 사용하고 있습니다.
답변1
"이 bash 세션에만 해당"이라고 말하면 스크립트를 호출한 bash 세션을 의미한다고 가정합니다.
스크립트를 실행하면 새로운 쉘 환경이 생성됩니다. 따라서 변수를 내보낼 때 해당 변수를 상위 환경이 아닌 새 셸 환경으로 내보내는 것입니다. 내가 아는 한 상위 환경에 액세스할 수 있는 방법은 없습니다. 그러나 bash를 사용하고 있으므로 몇 가지 가능한 솔루션이 있습니다.
사용source
/path/to/init.sh
다음과 같이 스크립트를 실행 하는 대신:source /path/to/init.sh
~에서배쉬 매뉴얼 페이지:
소스 파일 이름 [파라미터]
현재 쉘 환경에서 filename의 명령을 읽고 실행하고, filename에서 마지막으로 실행된 명령의 종료 상태를 반환합니다.
스크립트를 쉘 함수로 만들고 .bashrc에 넣습니다.
또 다른 옵션은 init를 함수로 만들고 다음과 같이 .bashrc에 넣는 것입니다.
function init {
export PATH=$PATH:/home/me/morph_numsys/software/bin
}
그런 다음 터미널에서 실행할 수 있습니다 init
.