전체 환경 설정을 bash 파일에 넣으려고 합니다. 나는 한 가지 문제만 해결한다. 파일 내부에서 새 경로를 내보내려고 하면 bash 파일이 실행되는 환경에서 경로가 설정되지 않습니다. 나하고 싶어
>>sudo -H sh test.sh
test.sh는 어디에 있나요?
bunch of installs
export PATH=/home/ubuntu/anaconda3/bin:$PATH
a second bunch of installs
나는 그것이 eval의 목적이라고 생각해서 시도했습니다.
eval `export PATH=/home/ubuntu/anaconda3/bin:$PATH`
그리고 심지어
eval `echo "export PATH=/home/ubuntu/anaconda3/bin:$PATH"`
하지만 터미널에서 명령에 액세스할 수 없습니다. 수동으로 하면 잘 작동합니다.
- - - - - - - -갱신- - - - - -
표준 bash 실행은 서브셸에서 수행되므로 실행 후 환경 변수가 손실됩니다. 동일한 쉘에서 실행하려면 다음을 수행하십시오.
source test.sh
하지만 실행에 대한 전체 권한을 가질 수 있어야 하므로 다음을 사용해야 합니다.스도. 설명대로여기넌 전화를 걸 수 없어수도 겐하지만 그들은 그것이 작동하도록 해킹을 제공합니다
source <(sudo cat /etc/environment)
답변1
Bash를 사용하는 경우 간단한 대답은 내보낸 변수를 기존 개인 시작(또는 초기화) 파일 중 하나에 넣는 것입니다. 터미널을 닫으면 터미널에 내보낸 변수가 손실됩니다. 스크립트에서 내보낸 변수는 스크립트가 종료되면 손실됩니다.
존재할 수도 있고 존재하지 않을 수도 있는 다른 시작 파일이 있지만 가장 일반적인 것은 다음과 같습니다.
~/.bashrc
- 비로그인 쉘에 대해 bash에 의해 실행됨
~/.bash_profile
- 대화형 로그인 셸을 위해 bash에 의해 실행됨
~/.profile
예아직 읽지 않았어이 파일이 존재하는 경우~/.bashrc
일부 시스템에서도 읽어보세요.- 파일을 다시 읽으려면 (로그아웃 및) 로그인이 필요합니다.
~/.profile
- 로그인 쉘의 명령 해석기에 의해 실행됩니다.
- 예아직 읽지 않았어
~/.bash_profile
존재하는 경우 ~/.bashrc
일부 시스템에서도 읽어보세요.- 파일을 다시 읽으려면 (로그아웃 및) 로그인이 필요합니다.
또는 모든 개인 사용자 정의가 포함된 새 시작 파일을 생성하고 명령줄/스크립트 또는 위의 시작 파일 중 하나를 사용하여 이를 읽습니다(가져오기 source /path/to/myenvironment
) . /path/to/myenvironment
.
일부 예제 시작 파일은 bash-doc
Ubuntu/Debian 패키지( 사용 sudo apt-get install bash-doc
)에서 사용할 수 있으며 다음 위치에 설치됩니다./usr/share/doc/bash/examples/startup-files/