bash 셸 스크립트(unix)에서 .profile을 다시 로드하시겠습니까?
저는 셸 스크립팅을 처음 접하게 되었고, 도전에 직면하게 되었습니다.다음을 수행하면 ".profile" 파일을 다시 로드할 수 있습니다.
. .profile
하지만 제가 쓰고 있는 바시 스크립트에서 동일한 것을 실행하려고 하지만 작동하지 않습니다.아이디어 있어요?제가 설명할 수 있는 다른 것이 있습니까?
감사해요.
현재 셸을 다시 로드하려면 다음을 시도합니다.
source ~/.profile
사용해 보십시오.
cd
source .bash_profile
~/.profile 파일을 다시 로드/소스할 때 몇 가지 문제가 발생합니다.[Ubuntu Linux를 가리킵니다. 경우에 따라 명령의 세부 정보가 다를 수 있습니다.]
- 터미널에서 직접 실행합니까? 스크립트에서 실행합니까?
- 스크립트에서 어떻게 실행합니까?
광고 1)
터미널에서 직접 실행하면 하위 셸이 생성되지 않습니다.따라서 두 가지 명령 중 하나를 사용할 수 있습니다.
source ~/.bash_profile
또는
. ~/.bash_profile
두 경우 모두 .profile 파일의 내용으로 환경을 업데이트합니다.
애드 2) 호출하여 모든 bash 스크립트를 시작할 수 있습니다.
sh myscript.sh
또는
. myscript.sh
첫 번째 경우 시스템의 환경 변수에 영향을 미치지 않는 하위 셸이 생성되고 하위 셸 프로세스에만 표시됩니다.subshell 명령을 완료한 후 내보내기 등이 적용되지 않습니다.이는 일반적인 실수이며 많은 개발자들이 많은 시간을 허비하게 됩니다.
스크립트에 적용된 변경 사항이 글로벌 환경에 적용되려면 스크립트를 실행해야 합니다.
.myscript.sh
지휘권
스크립트가 하위 셸에서 실행되지 않도록 하기 위해 이 기능을 사용할 수 있습니다. (또 다른 예는 Ubuntu 셸에 대한 것입니다.)
#/bin/bash
preventSubshell(){
if [[ $_ != $0 ]]
then
echo "Script is being sourced"
else
echo "Script is a subshell - please run the script by invoking . script.sh command";
exit 1;
fi
}
저는 이것이 일반적인 오해를 해소하기를 바랍니다! :D 행운을 빕니다!
bash 스크립트는 별도의 하위 셸에서 실행됩니다.이 작업을 수행하려면 다른 스크립트도 원본으로 만들어야 합니다.
시도:
#!/bin/bash
# .... some previous code ...
# help set exec | less
set -- 1 2 3 4 5 # fake command line arguments
exec bash --login -c '
echo $0
echo $@
echo my script continues here
' arg0 "$@"
언급URL : https://stackoverflow.com/questions/3274397/reload-profile-in-bash-shell-script-in-unix
'sourcecode' 카테고리의 다른 글
ASP 간의 연결 풀 문제를 해결하려면 어떻게 해야 합니까?NET 및 SQL 서버? (0) | 2023.04.29 |
---|---|
UILabel에서 텍스트를 애니메이션으로 변경합니다. (0) | 2023.04.29 |
VBA(Excel 2010)에서 기본 사례를 변수로 복원하는 방법은 무엇입니까? (0) | 2023.04.29 |
배포 대상은 무엇을 의미합니까? (0) | 2023.04.29 |
Date Time의 표현(밀리초 단위) (0) | 2023.04.19 |