Por que meu script é executado em / em vez de / mydir?

0

Este é o meu script, basta atualizar um localrepo de slackware quando notificar uma mudança em fs. Funciona em segundo plano, mas tem um pequeno problema em vez de trabalhar em / userdir onde estão presentes .gpg, funciona em / e cria um novo diretório .gnupg: / e claro que não funcionam. Minha pergunta é: como forçar o script a funcionar no userdir e leia gpg-agent e .gnupg keyrings de useerdir? Eu tentei cd e (cd / usrdir) mas nenhum funciona Obrigado

#!/bin/sh
funct()
{
(cd /userdir)         #don't work :(
echo password|/usr/libexec/gpg-preset-passphrase --preset XXXXXXXXXXXXXXXXXXXXXXX
#script update repo http

/usr/local/bin/gen_repos_files.sh -l /tmp/emptylog -v

#find /var/localrepo -type f |xargs chmod 644  -v

}

while inotifywait -o /dev/null -qqre modify /var/localrepo; do funct; done

~
~

    
por elbarna 18.01.2015 / 00:51

2 respostas

1

( cmd ) executa cmd em um subshell. Ou seja cmd não pode afetar o ambiente do shell principal. Executar

cd /userdir

em vez disso. Mas o diretório de trabalho atual não afeta o uso de gpg porque espera que seu diretório de configuração seja ~/.gnupg .

Seu ~ parece estar definido como / , o que é bastante estranho. Você pode definir HOME no início do script

export HOME="/userdir"

ou defina o diretório para gpg apenas:

export GNUPGHOME="/userdir"
    
por 18.01.2015 / 01:08
0

Este é o meu script final gpg-agent neeed para especificar home (opção --homedir)

#!/bin/sh
export HOME="/userdir"
export GNUPGHOME="/userdir/.gnupg"

funct()
{
pkill gpg-agent
rm ~/.gnupg/S.gpg-agent
mknod -m 700 ~/.gnupg/S.gpg-agent p
eval $(gpg-agent --daemon --allow-preset-passphrase --homedir="$(pwd)")
echo RELOADAGENT | gpg-connect-agent
echo XXX|/usr/libexec/gpg-preset-passphrase --preset XXXXXXXXXXXXXXXX
#script update repo http

/usr/local/bin/gen_repos_files.sh -l /tmp/emptylog -v

find /var/repo/ -type f |xargs chmod 644  -v

}
cd /userdir
while inotifywait -o /dev/null -qqre modify /var/repo; do cd /userdir && funct; done
    
por 18.01.2015 / 19:35