Substituir caminho para binário para um usuário em particular

7

Minha pergunta parece ser trivial, mas não consegui encontrar nada de útil na internet. Eu tenho um binário em

/urs/bin/binary

mas está desatualizado e a versão mais recente está disponível em algumas montagens, por exemplo

/mount/new_version/binary

Existe um script bash que invoca esse binário em uma forma como

binary -doSomething

Eu preciso deste script para invocar uma nova versão do binário em vez do antigo, mas não tenho permissão para alterar este script. É uma maneira de, de alguma forma, substituir o caminho para ele, mas apenas para o meu usuário? Qualquer ajuda seria apreciada.

    
por Viktor Stolbin 24.10.2013 / 14:08

3 respostas

8

Se o binário estiver em /usr/bin/binary e o script invocar o binário sem especificar o caminho completo, mas depender de /usr/bin estar em PATH , então você pode simplesmente adicionar o local do novo binário ao início de o usuário PATH . Coloque algo assim em ~/.bashrc :

PATH=/mount/new_version:$PATH

Por motivos de segurança, os scripts geralmente especificam o caminho completo dos binários para evitar esse tipo de coisa.

    
por 24.10.2013 / 16:10
1

Se você tiver acesso ao binário, poderá fazer o backup e criar um link simbólico.

mv /urs/bin/binary /urs/bin/binary.bkp
ln -s /mount/new_version/binary /urs/bin/binary

[EDITAR]

Desculpe, não vi que a alteração devesse ser feita apenas para um usuário.

Você pode criar uma função para ser chamada em vez do binário.

Dependendo de como você executa o binário (caminho completo ou nome), você deve criar uma função adequada , como:

# Full path
function /urs/bin/binary () { command /mount/new_version/binary "$@"; }
export -f /urs/bin/binary
# Name
function binary () { command /mount/new_version/binary "$@"; }
export -f binary

Se o binário não aceitar / precisar de argumentos, remova o "$ @" .

Para automatizar a criação da função, coloque as linhas da função no arquivo .profile no diretório inicial do usuário.

    
por 24.10.2013 / 14:14
1

alias commandname=/mount/new_version/binary

no .bashrc acima da declaração / exportação do caminho ou no perfil será fácil o suficiente.

    
por 24.10.2013 / 19:10