/etc/environment에서 이스케이프된 파운드 기호(#)

/etc/environment에서 이스케이프된 파운드 기호(#)

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"

관련 정보