実行すると、シェルが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
?組み込みの交換シェルをサポートしていないシェルは何ですか?
私はKubuntuでbashを使用しています。
答え1
従来のBourneシェルはそれらを組み合わせることをサポートしていません(System Vではこれを省略できますが、;
4.2BSD / SunOSシェルではそうではありません)。これはKornシェル(export
Bourneシェルとのcsh
クロスオーバーsetenv
)によって追加され、その後他のシェルとPOSIX.2に採用されました。多くの商用UnixはまだBourneシェルのSystem Vバリアントを提供しているので、/bin/sh
互換性を維持することは移植性にとって良い考えです。
答え2
定数文字列では機能しませんが、それを2つの別々のコマンドで実行する習慣がある理由の1つは、export FOO=$(mycmd)
終了状態を隠すことですmycmd
。mycmd
失敗しても成功を報告します。バラより 変数割り当ての戻り状態はどのように決定されますか?
そしてシェルチェックウィキ。