실행 되면 gpg-agent
셸에서 직접 처리할 수 있는 데이터를 출력합니다. 예를 들면 다음과 같습니다.
SSH_AUTH_SOCK=/tmp/ssh-apeOFqMF3292/agent.3292; export SSH_AUTH_SOCK;
SSH_AGENT_PID=3293; export SSH_AGENT_PID;
echo Agent pid 3293;
왜 이런 일을 하는가 gpg-agent
? 나는 더 많은 프로그램이 이것을 수행하는 것을 보았습니다. 이전 쉘에서는 이를 지원하지 않습니까 export var=val
? 내장 교체 쉘을 지원하지 않는 쉘은 무엇입니까?
저는 쿠분투에서 bash를 사용하고 있습니다.
답변1
전통적인 Bourne 쉘은 이들을 결합하는 것을 지원하지 않습니다(System V에서는 이를 생략할 수 있지만 ;
4.2BSD/SunOS 쉘에서는 그렇지 않습니다). 이는 Korn 쉘( export
Bourne 쉘과의 csh
크로스 오버 setenv
)에 의해 추가되었으며 이후 다른 쉘과 POSIX.2에 채택되었습니다. 많은 상용 Unix는 여전히 Bourne 쉘의 System V 변형을 제공하므로 /bin/sh
호환성을 유지하는 것이 이식성을 위한 좋은 생각입니다.
답변2
상수 문자열에서는 작동하지 않지만 이를 두 개의 개별 명령으로 실행하는 습관을 들이는 이유 중 하나는 export FOO=$(mycmd)
종료 상태를 가리기 위한 것입니다 mycmd
. mycmd
실패하더라도 성공을 보고합니다. 바라보다 변수 할당의 반환 상태는 어떻게 결정됩니까?
그리고쉘체크 위키.