2014-10-31 3 views
2

차이점은 무엇입니까?

echo $LOGNAME  #prints username 
echo "$(logname)" #prints username 

을하지만이되지 않습니다 : : 왜 이러한 작업

echo "$(LOGNAME)" #prints command not found. 
+3

'$ LOGNAME'과'$ (logname)'둘 다 같은 결과가 발생합니다. '$ LOGNAME'과'env' 같은 환경 변수를 볼 수 있습니다. 반면에'logname'은'man logname'으로 정보를 얻을 수있는 명령입니다. – fedorqui

+0

@fedorqui :'$ LOGNAME'은'$ (logname)'과 때때로 다를 수 있다는 것을 의미합니까? – mrdaliri

+2

그것은 당신이'LOGNAME'을 설정할 수 있기 때문에 다를 수 있습니다. 그것을 시도하십시오 :'LOGNAME = blblbl; echo "$ LOGNAME"'. –

답변

4

logname는 명령입니다.
LOGNAME은 변수입니다.

$(logname)은 logname 명령이 있기 때문에 작동합니다.
$(LOGNAME) 존재하지 않는 명령 LOGNAME을 실행하려고합니다.

following useful guide

4

$LOGNAME가 변수입니다 읽어보십시오. logname은 명령입니다. 당신은 당신이

echo "$(logname)" 

을 할 때 명령을 실행 한 결과를 울리는 반면 당신이 변수를 반향하는

echo $LOGNAME 

을 수행 할 때. 출력이 동일한 경우가 발생합니다.

env | grep LOGNAME을 수행하면 $LOGNAME은 환경 변수이고 which logname을 입력하면 실행 파일의 경로가 표시됩니다. 그러나 which LOGNAME을 수행하면 출력이 없음을 알 수 있습니다. echo $?은 명령의 종료 상태가 1임을 보여줍니다. 이는 실행 파일을 찾을 수 없음을 의미합니다.

우연히도 $PWDpwd으로 동일한 작업을 수행 할 수 있습니다.

관련 문제