env 변수를 추가하고 /etc/environment
있지만 변수 값에 # 기호가 포함되어 있기 때문에 문자열이 스트라이프됩니다.
MYSQL_PWD="something#no"
이제 env
위 코드를 수행하면 yields MYSQL_PWD=something
. 해시를 피하려면 어떻게해야합니까? 나는 이미 \
캐릭터를 시도했습니다 .
/etc/environment
.
env 변수를 추가하고 /etc/environment
있지만 변수 값에 # 기호가 포함되어 있기 때문에 문자열이 스트라이프됩니다.
MYSQL_PWD="something#no"
이제 env
위 코드를 수행하면 yields MYSQL_PWD=something
. 해시를 피하려면 어떻게해야합니까? 나는 이미 \
캐릭터를 시도했습니다 .
/etc/environment
.
답변:
이 (가) 가능하지 않은 것 같습니다 /etc/environment
. 쉘 독립적 인 변수의 공통 위치로 사용됩니다. 이것을 감안할 때 해시 표시 ( #
)가있는 문자열을 지원하는 것처럼 보이지 않으며 탈출 할 수있는 방법이없는 것 같습니다.
이 SF Q & A라는 제목을 발견했습니다 : linux etc / environment에서 "#"문자를 어떻게 올바르게 이스케이프합니까? . 이 방법들 중 어느 것도 효과가 없었습니다.
그 질문에 대한 대답은 무엇이며 내 조언은 무엇입니까?
글쎄, 당신이하고 싶은 까다로운 일은
/etc/environment
쉘 구문이 아니며, 하나처럼 보이지만 그렇지는 않습니다. 뒤에 아이디어/etc/environment
는 훌륭했습니다. 변수를 설정하는 쉘 독립적 방법! 예이! 그러나 실제적인 한계로 인해 쓸모가 없습니다.거기에 변수를 전달할 수 없습니다. 예를 들어
MAIL=$HOME/Maildir/
그것을 넣어 보고 어떻게되는지보십시오. 어쨌든 어떤 목적으로도 사용하지 않으려는 것이 가장 좋습니다. 따라서 쉘로 처리 한 경우 수행 할 수있는 작업을 수행 할 수 없습니다.
/etc/profile
또는을 사용하십시오/etc/bashrc
.
그러나 또 다른 Q & A 는 이것이 왜 그런지에 대한 합리적인 설명을했습니다.
/etc/environment
PAM 모듈 "pam_env"에 의해 구문 분석 될 때 # (주석으로 처리 된) 을 이스케이프 처리 할 방법이 없으며 이를 KEY = VAL 쌍의 간단한 목록으로 취급하고 이에 따라 환경을 설정합니다. bash / shell이 아니며 파서에는 변수 확장 또는 문자 이스케이프를 수행 할 언어가 없습니다.
/proc/environ
.
/etc/environment
있습니까? Debian Wheezy에서이 동작을 복제 할 수 없었기 때문입니다.