에서 환경 변수 설정을 해제하기 위해 고투? 여기서 내가 뭘 잘못하고 있니? 심지어 실행 중 :내가 이전에 사용하여 환경 변수를 설정 한 bash는
source ~/.bash_profile
작동하지 않습니까?
에서 환경 변수 설정을 해제하기 위해 고투? 여기서 내가 뭘 잘못하고 있니? 심지어 실행 중 :내가 이전에 사용하여 환경 변수를 설정 한 bash는
source ~/.bash_profile
작동하지 않습니까?
새 셸을 여는 경우, 먼저 수행 할 작업은 소스 ~/.bash_profile
입니다. 그리고 거기에서 변수가 다시 설정됩니다.
영구히 제거하려면 ~/.bash_profile
을 편집하여 해당 줄을 다시 제거하십시오. (새로운 세션에만 적용됩니다.)
unset
은 현재 쉘에서 설정을 해제하려는 경우에 좋지만, 본 것처럼 쉘의 새로운 호출에는 영향을주지 않습니다.
고마워요,이 일은 제가해야 할 일 이었지만 이전에 그렇게하는 방법이 확실하지 않았습니다. 감사합니다. – sphaughton
이 작업을 수행 :
#!/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이며 집 주소를 가진 동일한 사용자와 함께 실행하면 문제가 없습니다. 그러나 나는 이것을 반복한다 ... 이것은 아주 나쁜 연습이다.
건배.
현재 셸에서는 설정을 취소하고 셸 세션에서는 설정을 취소하지 않습니다. – Madbreaks
@Madbreaks 사과 내가 분명해야했다 : 내 현재 쉘에서 내가 echo 명령을 사용할 때조차도 계속 실행된다. 현재 쉘에서도 설정을 해제 할 수 없습니다. – sphaughton