3

私の問題

私の主な問題は、cシェルからgnome-keyring-daemonを起動する必要があることです。bashでは、それは非常に簡単です。

> export `gnome-keyring-daemon`

これは次と同等です:

> export GNOME_KEYRING_SOCKET=/tmp/0123.1.sds/keyring-abcdef/socket GNOME_KEYRING_PID=012345

私の目標はcシェルで同じ機能を取得することですが、私のコマンドラインスキルはそのタスクに対応していません。

私が試したこと

私が走ったら

エコーgnome-keyring-daemon| tr'=''' | sed s / GNOME_KEYRING_SOCKET / setenv \ GNOME_KEYRING_SOCKET / | sed s / GNOME_KEYRING_PID / \; setenv \ GNOME_KEYRING_PID /

良いスタートを切る:

setenv GNOME_KEYRING_SOCKET /tmp/0123.1.sds/keyring-abcdef/socket ;setenv GNOME_KEYRING_PID 012345

その出力をコピーしてコマンドラインに貼り付けて機能させることができるという事実にもかかわらず、そのステートメントをティックで囲んで1行で機能させると、次のエラーが発生します。

nullコマンドが無効です。

私はそれを調査し、それがエスケープまたは削除する必要がある改行の忍び込みに関連していることを確認しました。ただし、次のように\rおよび\nの置換コマンドを追加した後でもエラーが発生します。

> | tr '\r' ' ' | tr '\n' ' ' |

私が探しているもの

gnome-keyring-daemonを起動する.cshrcファイルに追加できるものが本当に必要です。私が間違った方向に進んでいる場合は、別のアプローチを聞いてうれしいです。

ありがとう!

私が試した最後の1つ

これを本当に単純化するために、一度に1つの変数を設定することも試みました。

setenv GNOME_KEYRING_PID `echo -n `gnome-keyring-daemon` | sed 's/.*GNOME_KEYRING_PID=\([0-9]\+\)/\1/'`

これにより、「無効なnullコマンド」も表示されます。これが機能するという事実にもかかわらず、メッセージ:

setenv GNOME_KEYRING_PID `echo '1234'`
4

2 に答える 2

2

@shelterと@gbulmerにご協力いただきありがとうございます。私は自分の質問に答えるのは本当に嫌いですが、これは将来誰かを助けるかもしれません...

最後に、Cシェルスクリプトを更新して、変数を複数の別々の行に設定しました。

set gkd = `gnome-keyring-daemon`

set pid = `echo $gkd |  sed 's/.*GNOME_KEYRING_PID=\([0-9]\+\)/\1/'`
set socket = `echo $gkd | sed 's/GNOME_KEYRING_SOCKET=\([^ ]\+\).\+/\1/'`
setenv GNOME_KEYRING_PID $pid
setenv GNOME_KEYRING_SOCKET $socket
于 2012-03-23T17:41:17.497 に答える
1

エコーを試しましたかecho -n gnome-keyring-daemon | ... 改行を追加します

于 2012-03-21T19:14:23.157 に答える