일부 환경 변수에는 일부 제어 변수가 있지만이 문자로 인해 단순한 export
명령의 출력이 엉망입니다.환경 변수의 제어 문자가`export`의 출력을 엉망으로 만듭니다.
가 어떻게이 문제를 해결할 수 있습니다 : 스크린 샷을 참조하십시오?
일부 환경 변수에는 일부 제어 변수가 있지만이 문자로 인해 단순한 export
명령의 출력이 엉망입니다.환경 변수의 제어 문자가`export`의 출력을 엉망으로 만듭니다.
가 어떻게이 문제를 해결할 수 있습니다 : 스크린 샷을 참조하십시오?
왜 이것이 문제입니까? 출력을 파일에 인쇄하면 쉘에서 완전히 허용됩니다. 거기에 무엇이 있는지보고 싶다면 파일에 cat -v
또는 hexdump
과 같은 것을 사용하십시오.
나는 이것이 일어날 수 있음을 확인합니다. 이 문제를 해결하기위한 적절한 방법이 있는지 확실하지 않습니다,하지만 나는 부분적인 해결책 해킹 :
printenv -0 |
while IFS= read -r -d '' s; do
printf "declare -x %s=%q\n" "${s%%=*}" "${s#*=}"
done
이는 것을 제외하고 제대로 것, export -p
의 출력 거의 해당하는 출력을 생성한다을 변수의 값에서 모든 특수 문자를 이스케이프 처리합니다. 한 가지 문제는 printenv
이 export -p
과 똑같은 변수 목록을 인쇄하지 않는다는 것입니다 (예 : export -p
에는 $OLDPWD
이 포함되지만 $_
은 포함되지 않음). -0
옵션을 지원하기 때문에 printenv
만 사용합니다.
예 : 당신이 export myvar=$'\E[01;31mtest'
을 한 후 내 스크립트를 실행하는 경우, 출력은 다음을 포함한다 :
declare -x myvar=$'\E[01;31mtest'
당신이 빨간색으로 인쇄 라인을 많이 얻을 것이다 export -p
를 입력하면 반면 (가정 당신의 터미널은 컬러를 지원함).