/ etc / environment에서 이스케이프 해시 마크 (#)


17

env 변수를 추가하고 /etc/environment있지만 변수 값에 # 기호가 포함되어 있기 때문에 문자열이 스트라이프됩니다.

MYSQL_PWD="something#no"

이제 env위 코드를 수행하면 yields MYSQL_PWD=something. 해시를 피하려면 어떻게해야합니까? 나는 이미 \캐릭터를 시도했습니다 .


당신이 넣는 것과 정확히 같은 내용을 게시하고 /etc/environment있습니까? Debian Wheezy에서이 동작을 복제 할 수 없었기 때문입니다.
Joseph R.

죄송합니다 수출이 없습니다. 내 질문을 업데이트했습니다.
Umair A.

지금은 MySQL pwd를 변경했습니다 :(
Umair A.

나는 당신의 행동을 복제했습니다. 쉘을 읽으려면 로그 아웃했다가 다시 로그인해야한다는 것을 몰랐습니다 /etc/environment.
Joseph R.

@JosephR. -이것을 복제하고 놀랐습니다. 이 파일의 역할을 살펴보면 의도와 일치하는 것 같습니다.
slm

답변:


18

이 (가) 가능하지 않은 것 같습니다 /etc/environment. 쉘 독립적 인 변수의 공통 위치로 사용됩니다. 이것을 감안할 때 해시 표시 ( #)가있는 문자열을 지원하는 것처럼 보이지 않으며 탈출 할 수있는 방법이없는 것 같습니다.

이 SF Q & A라는 제목을 발견했습니다 : linux etc / environment에서 "#"문자를 어떻게 올바르게 이스케이프합니까? . 이 방법들 중 어느 것도 효과가 없었습니다.

  • control = "hello"
  • test0 = "# hello"
  • test1 = "h \ #ello"
  • test2 = "h # ello"
  • test3 = "h // # ello"
  • test4 = "h / # ello"
  • test5 = h # ello
  • test6 = h \ #ello
  • test7 = h # ello
  • test8 = h // # ello
  • test9 = h / # ello
  • test10 = 'h # ello'
  • test11 = 'h \ #ello'
  • test12 = 'h # ello'
  • test13 = 'h // # ello'
  • test14 = 'h / # ello'

그 질문에 대한 대답은 무엇이며 내 조언은 무엇입니까?

글쎄, 당신이하고 싶은 까다로운 일은 /etc/environment쉘 구문이 아니며, 하나처럼 보이지만 그렇지는 않습니다. 뒤에 아이디어 /etc/environment는 훌륭했습니다. 변수를 설정하는 쉘 독립적 방법! 예이! 그러나 실제적인 한계로 인해 쓸모가 없습니다.

거기에 변수를 전달할 수 없습니다. 예를 들어 MAIL=$HOME/Maildir/그것을 넣어 보고 어떻게되는지보십시오. 어쨌든 어떤 목적으로도 사용하지 않으려는 것이 가장 좋습니다. 따라서 쉘로 처리 한 경우 수행 할 수있는 작업을 수행 할 수 없습니다.

/etc/profile또는을 사용하십시오 /etc/bashrc.

그러나 또 다른 Q & A 는 이것이 왜 그런지에 대한 합리적인 설명을했습니다.

/etc/environmentPAM 모듈 "pam_env"에 의해 구문 분석 될 때 # (주석으로 처리 된) 을 이스케이프 처리 할 방법이 없으며 이를 KEY = VAL 쌍의 간단한 목록으로 취급하고 이에 따라 환경을 설정합니다. bash / shell이 ​​아니며 파서에는 변수 확장 또는 문자 이스케이프를 수행 할 언어가 없습니다.

참고 문헌


그게 버그입니까, 아니면 그 뒤에 어떤 이유가 있습니까?
Umair A.

1
@UmairAshraf-버그가 아니라이 파일의 역할에 따라 기능이 제한되었습니다. 이 파일은 여러 셸 기술에 걸쳐 있으므로 사용되는 모든 셸에서 지원되는 기능과 함께 제공되어야합니다.
slm

얼마나 바보 같은가; 이것은와 같은 형식을 사용해야합니다 /proc/environ.
Kaz

1

아마 너무 늦게, 그러나 세 개의 백 슬래시 전에 #나를 위해 일했다.

비밀번호가 "admin # 123"인 경우 다음과 같이 정의 할 수 있습니다.

admin\\\#123

이것은 /etc/environment파일 에서 나를 위해 작동하지 않았습니다 .
Joey V.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.