Моя проблема
Моя основная проблема заключается в том, что мне нужно запустить демон gnome-keyring-daemon из оболочки c. В bash это довольно просто:
> export `gnome-keyring-daemon`
что эквивалентно:
> export GNOME_KEYRING_SOCKET=/tmp/0123.1.sds/keyring-abcdef/socket GNOME_KEYRING_PID=012345
Моя цель - получить ту же функциональность в оболочке c, но мои навыки работы с командной строкой не подходят для этой задачи.
Что я пробовал
Если я побегу
эхо
gnome-keyring-daemon
| тр '=' ' ' | 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
Несмотря на то, что я могу скопировать и вставить этот вывод в командную строку и заставить его работать, если я заключаю этот оператор в тики, чтобы заставить его работать в одной строке, я получаю следующую ошибку:
Недопустимая нулевая команда.
Я изучил его и обнаружил, что он связан с новой строкой, которая должна быть сбежал или удален; однако я все еще получаю сообщение об ошибке даже после добавления команд замены для \r и \n следующим образом:
> | tr '\r' ' ' | tr '\n' ' ' |
Что я ищу
Мне действительно просто нужно что-нибудь, что я могу добавить в свой файл .cshrc, который запустит демон gnome-keyring-daemon. Если я на неправильном пути, я был бы рад услышать альтернативный подход.
Спасибо!
Одна последняя вещь, которую я попробовал
Чтобы действительно упростить это, я также попытался просто установить одну переменную за раз:
setenv GNOME_KEYRING_PID `echo -n `gnome-keyring-daemon` | sed 's/.*GNOME_KEYRING_PID=\([0-9]\+\)/\1/'`
Что также дает мне «Неверную нулевую команду». сообщение, несмотря на то, что это работает:
setenv GNOME_KEYRING_PID `echo '1234'`
echo gnome-keyring-daemon | sed 's/=//;s/GNOME_KEYRING_SOCKET/setenv GNOME_KEYRING_SOCKET/; s/GNOME_KEYRING_PID/;setenv GNOME_KEYRING_PID/'
Хм, давно я не занимался сложными вещами csh. возможно, нуль вставляется при обработке обратной кавычки, поэтому добавлениеtr '\r' ''
и т. д. не решит эту проблему. Кроме того, вы уверены, что код работает, не уверены, что кто-либо/всеtr
знают о '\ r', поэтому попробуйте восьмеричный, то есть'\015'
. Удачи. - person shellter   schedule 21.03.2012