2015-01-09 3 views
1

에서 환경 변수 설정을 해제하기 위해 고투? 여기서 내가 뭘 잘못하고 있니? 심지어 실행 중 :내가 이전에 사용하여 환경 변수를 설정 한 bash는

source ~/.bash_profile 

작동하지 않습니까?

+0

현재 셸에서는 설정을 취소하고 셸 세션에서는 설정을 취소하지 않습니다. – Madbreaks

+0

@Madbreaks 사과 내가 분명해야했다 : 내 현재 쉘에서 내가 echo 명령을 사용할 때조차도 계속 실행된다. 현재 쉘에서도 설정을 해제 할 수 없습니다. – sphaughton

답변

3

새 셸을 여는 경우, 먼저 수행 할 작업은 소스 ~/.bash_profile입니다. 그리고 거기에서 변수가 다시 설정됩니다.

영구히 제거하려면 ~/.bash_profile을 편집하여 해당 줄을 다시 제거하십시오. (새로운 세션에만 적용됩니다.)

unset은 현재 쉘에서 설정을 해제하려는 경우에 좋지만, 본 것처럼 쉘의 새로운 호출에는 영향을주지 않습니다.

+0

고마워요,이 일은 제가해야 할 일 이었지만 이전에 그렇게하는 방법이 확실하지 않았습니다. 감사합니다. – sphaughton

-1

이 작업을 수행 :

#!/bin/bash 

file="~/.bash_profile" 

readarray -t FILE < <(cat < "${file}") 
rm -rf "${file}" 
for item in "${FILE[@]}"; do 
    if [[ ! "${item}" =~ export ]]; then 
     echo "${item}" >> "${file}" 
    fi 
done 

조심! 이것은 .bash_profile 파일의 내용을 배열에 저장하려고합니다 ... 그런 다음 그것을 삭제 한 다음 필요한 정규 표현식과 일치하는 행을 제외한 모든 동일한 행을 사용하여 다시 생성하려고 시도합니다. "export"만하지만 .bash_profile의 내용에 따라 다른 행을 제거 할 수 있기 때문에이를 확인하십시오.

이렇게주의하십시오. .bash_profile에 "export"라는 문자열이 포함 된 행이 있고 그 행이 제거하려는 것이 확실하다면이 스크립트가 스크립트입니다. 그렇지 않으면 조건부에 대한 정규 표현식을 수정하십시오.

그리고이 후에 파일의 사용 권한과 소유자에주의하십시오. 일반적으로 644이며 집 주소를 가진 동일한 사용자와 함께 실행하면 문제가 없습니다. 그러나 나는 이것을 반복한다 ... 이것은 아주 나쁜 연습이다.

건배.

관련 문제