.xsessionrc에서는 작동하지만 명령줄에서는 작동하지 않는 bash 테스트 관련 문제

.xsessionrc에서는 작동하지만 명령줄에서는 작동하지 않는 bash 테스트 관련 문제

나는 분명히 단순한 rtfm 문제처럼 보이는 것을 해결할 수 없습니다. 이 줄은 명령줄(zsh 및 bash)에서 잘 작동합니다.

[[ -f ${HOME}/.xsessionrc.local ]] && . ${HOME}/.xsessionrc.local

내 .xsessionrc(bash로 수정)에 넣으면 그렇지 않습니다.

이중 대괄호가 작동해야 한다고 오해했나요? 내가 말했듯이, 그것들은 bash 명령줄에서 실행됩니다.

두 줄 모두 작동합니다(주석 해제 시):-

처음부터 명확하게 작동하기 위해 필요한 것은 아니며 다른 형식 중 하나를 사용할 수 있지만 "스크립트에서는" 작동하지 않지만 명령줄에서 직접 사용할 때는 왜 작동합니까? XSession이 .xsessionrc를 얻는 방법에 대한 약간의 차이가 있습니까?

  # F=${HOME}/.xsessionrc.local;[ -f $F ] && . $F
  # [ -f ~/.xsessionrc.local ] && .  ${HOME}/.xsessionrc.local

양해해 주셔서 감사합니다. 나는 지금 그것에 눈이 멀었습니다. 나는 이것에 몇 시간을 보냈다;)

답변1

사용

[ -f "$HOME/.xsessionrc.local" ] && . "$HOME/.xsessionrc.local"

즉, 단일 대괄호를 사용하고 파일의 경로 이름을 참조합니다.

bash이중 대괄호는 (및 기타) 쉘의 비표준 테스트 구문입니다. 실제로 bash파일을 읽고 있는지 확실하지 않으며 /bin/sh테스트에 사용되는 이중 대괄호 구문을 이해하지 못할 가능성이 높습니다.

또한보십시오:

관련 정보