이 변수가 .bashrc에 설정되어 있는데 왜 값이 없나요?

이 변수가 .bashrc에 설정되어 있는데 왜 값이 없나요?

이것을 추가하면:

hi=11
export hi

.bashrc로 보낸 다음 이 사용자에게 다음을 보냅니다.

su - bela

그럼 내가:

echo $hi
11

그러면 작동하고 "hi" 변수의 값은 "11"입니다. 하지만. 내가:

su -c "echo $hi" bela

변수 "hi"에는 값이 없습니다. 왜?

(CentOS 6에서 실행)

답변1

su -c "echo $hi" belasu, -c및 단어로 확장 됩니다 echo ​. bela변수가 hi현재 셸에 정의되어 있지 않기 때문에 확장이 비어 있습니다. 사용자로 실행되는 명령은 bela입니다 echo ​.

수정: su -c 'echo $hi' bela, 작은따옴표로 보호되어 확장되지 않습니다 $...아니요. 이 .bashrc파일은 대화형 셸에서만 읽을 수 있습니다. 을 실행하면 user 로 실행 su -c 'echo $hi' bela됩니다 . 그러나 변수를 정의하는 것이 없기 때문에 명령은 확장되어 여전히 아무것도 인쇄하지 않습니다.echo $hibelahiecho $hiecho

관련 정보