env 변수를 추가했지만 /etc/environment
변수 값에 # 기호가 포함되어 있으므로 문자열이 제거되었습니다.
MYSQL_PWD="something#no"
env
이제 위의 코드를 실행하면 해시가 생성됩니다 MYSQL_PWD=something
. 어떻게 해야 이스케이프할 수 있나요? \
캐릭터를 시험해 봤습니다 .
답변1
/etc/environment
이는 쉘 독립적인 변수의 공개 위치 에서는 불가능해 보입니다 . 이를 고려하면 해시 태그()가 포함된 문자열을 지원하지 않는 것 같고 #
이를 이스케이프할 방법도 없는 것 같습니다.
다음과 같은 제목의 SF Q&A를 찾았습니다.Linux 등/환경에서 선행 "#" 문자를 올바르게 이스케이프하는 방법은 무엇입니까?. 다음 방법 중 어느 것도 작동하지 않습니다.
- 컨트롤 = "안녕하세요"
- 테스트 0 = "#hello"
- test1="h\#안녕하세요"
- test2 = "안녕하세요"
- test3 = "h //#ello"
- test4 = "h/#ello"
- test5=h#안녕하세요
- test6=h\#안녕하세요
- test7=h#안녕하세요
- test8=h //#안녕하세요
- test9=h/#ello
- test10='h#안녕하세요'
- test11='h\#안녕하세요'
- test12='h#안녕하세요'
- test13='h//#안녕하세요'
- test14='h/#ello'
이 질문에 대한 답변과 제 제안은 다음과 같습니다.
글쎄, 당신이 원하는 것은
/etc/environment
쉘 구문이 아닙니다. 이것은 까다로운 일입니다. 쉘 구문은 쉘 구문과 같지만 그렇지 않아 정말 실망스럽습니다. 그 뒤에 숨은 아이디어는/etc/environment
훌륭합니다. 변수를 설정하는 쉘 독립적인 방법입니다! 응! 그러나 실제적인 한계로 인해 쓸모가 없게 됩니다.거기에는 변수를 전달할 수 없습니다. 그것을 넣고
MAIL=$HOME/Maildir/
무슨 일이 일어나는지보십시오. 아아, 어떤 목적으로든 사용하려는 시도를 중단하는 것이 가장 좋습니다. 따라서 쉘에서 처리할 경우 기대했던 작업을 수행할 수 없습니다.
/etc/profile
또는 를 사용하세요/etc/bashrc
.
하지만 여전히또 다른 Q&A그 이유는 다음과 같습니다.
/etc/environment
# 은 KEY=VAL 쌍의 간단한 목록으로 처리하고 이에 따라 환경을 설정하는 PAM 모듈 "pam_env"에 의해 구문 분석되고 있기 때문에 (주석으로 처리되기 때문에) 이스케이프 할 수 없습니다 . bash/shell이 아니며, 파서에는 변수 확장이나 문자 이스케이프를 수행하기 위한 언어가 없습니다.
인용하다
답변2
큰 따옴표 안의 작은 따옴표가 저에게 효과적이었습니다. 누군가에게 도움이 될 수도
test="'h/#ello'"
답변3
NodeJS로 테스트할 때(특히 Express 애플리케이션에서) 예약 문자가 포함된 경우 전체 변수를 따옴표로 묶을 수 있습니다.
EXAMPLE_VAR = he#llo
FIXED_EXAMPLE_VAR = "he#llo"
그런 다음 변수를 사용해보십시오.
console.log(process.env.EXAMPLE_VAR); // outputs `he`
console.log(process.env.FIXED_EXAMPLE_VAR); // outputs `he#llo`
답변4
#
사용. . . 교체 %23
.
예를 들어:
postgres://user:#password#@server:port/database
도착하다:
DB_URI="postgres://user:%23password%23@server:port/database"