Posso obter o $ PATH correto ao executar o sudo -u db2inst -sh “db2”?

2

Eu preciso executar sudo -u db2inst1 sh -c "db2 connect to db; db2 set schema Edumate; db2 \"select * from edumate_settings\"" , mas não quero especificar o caminho absoluto para o db2

Se eu executar sudo -u db2inst1 sh -c "id;$PATH;ls /opt/ibm/db2/V9.7/bin/db2"

Eu recebo $ PATH correto onde /opt/ibm/db2/V9.7/bin/ está presente

uid=1002(db2inst1) gid=107(db2iadm1) groups=16(dialout),33(video),107(db2iadm1),108(db2fadm1),1001(eduserver)
sh: /sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games:/usr/lib64/jvm/jre/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin:/opt/firebird/bin:/opt/ibm/db2/V9.7/bin/:/opt/eduserver/bin: No such file or directory
/opt/ibm/db2/V9.7/bin/db2

Mas se eu executar sudo -u db2inst1 sh -c "db2" , recebo sh: db2: command not found

Se eu usar o caminho absoluto (não quero usar o caminho absoluto no caso dele ser alterado) recebo o prompt do db2.

Alguma sugestão de como chamar apenas db2 neste comando sudo -u db2inst1 sh -c "db2 connect to db; db2 set schema Edumate; db2 \"select * from edumate_settings\""

    
por Radek 07.11.2012 / 00:41

1 resposta

1

Na maioria das configurações, o sudo substitui a variável de ambiente PATH por um padrão de tempo de compilação ou um valor especificado em /etc/sudoers .

Você pode fazer a pesquisa de caminho antes de passar o comando para sudo .

db2=$(unset -f db2; unalias db2 2>/dev/null; command -v db2)
sudo -u db2inst1 sh -c '"$0" connect to db; "$0" set …' "$db2"

No caso comum, quando você sabe que o comando não é uma função nem um alias no seu shell atual e que o caminho completo não contém nenhum caractere especial:

sudo -u db2inst1 sh -c "$(command -v db2) connect to db; $(command -v db2) set …"

Observe o uso de aspas duplas aqui, para que $(command -v db2) seja avaliado no shell externo. Você pode alimentar comandos na entrada padrão para economizar mais digitação:

sudo -u db2inst1 $(command -v db2) <<\EOF
connect to db
set …
EOF
    
por 07.11.2012 / 01:12

Tags