이것을 추가하면:
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" bela
su
, -c
및 단어로 확장 됩니다 echo
. bela
변수가 hi
현재 셸에 정의되어 있지 않기 때문에 확장이 비어 있습니다. 사용자로 실행되는 명령은 bela
입니다 echo
.
수정: su -c 'echo $hi' bela
, 작은따옴표로 보호되어 확장되지 않습니다 $
...아니요. 이 .bashrc
파일은 대화형 셸에서만 읽을 수 있습니다. 을 실행하면 user 로 실행 su -c 'echo $hi' bela
됩니다 . 그러나 변수를 정의하는 것이 없기 때문에 명령은 확장되어 여전히 아무것도 인쇄하지 않습니다.echo $hi
bela
hi
echo $hi
echo