如果gpg-agent
执行,则输出可由shell直接处理的数据,例如:
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
?我见过更多的程序这样做。以前的shell不支持吗export var=val
?哪些 shell 不支持内置的替代 shell?
我正在 Kubuntu 中使用 bash。
答案1
传统的 Bourne shell 不支持组合它们(尽管 System V 允许您省略;
;4.2BSD / SunOS shell 则不支持)。它是由 Korn shell 添加的(export
与Bourne shell 的csh
's交叉setenv
),随后被其他 shell 和 POSIX.2 采用。许多商业 Unix 仍然提供 Bourne shell 的 System V 变体/bin/sh
,因此保留兼容性对于可移植性来说是一个好主意。
答案2
它不适用于常量字符串,但养成将其作为两个单独命令执行的习惯的一个原因是export FOO=$(mycmd)
掩盖退出状态mycmd
- 即使mycmd
失败它也会报告成功。看 变量赋值的返回状态是如何确定的?
和ShellCheck 维基。