PATH trabalha com diretórios relativos

2

Estou tentando fazer um programa funcionar que não esteja no gerenciador de pacotes da minha distro. Não fornece um makefile ou fontes, apenas binários. Se eu copiar a pasta inteira para / usr / local e adicioná-la ao meu PATH no .bashrc, posso executar o programa, mas há problemas. O programa requer alguns arquivos locais de seu diretório e eles são armazenados como um caminho relativo. O programa procura os arquivos no diretório em que estou atualmente, não o diretório em que o programa está. Há alguma maneira de contornar isso? Obrigado.

    
por user2102873 12.03.2013 / 01:32

2 respostas

2

Se o programa é realmente tão hostil quanto esperar que você o execute somente a partir do seu próprio diretório, você pode ter que deixá-lo em seu próprio diretório (incluindo subpastas) e criar um script que está no seu PATH. Este script irá mudar os diretórios para o local do programa e executá-lo. Tudo ficará bem. Bem ... bem o suficiente. Algo como:

#! /bin/sh -
cd /usr/local/crudesoftware &&
./theprogram  
    
por 12.03.2013 / 02:32
1

Muitos programas usam variáveis de ambiente exclusivas de si mesmas. Por exemplo, um programa chamado foo pode procurar uma variável de ambiente chamada FOO_DIR ou FOO_DATA_PATH (e pode usar o diretório atual como padrão se a variável não estiver definida). Eu sei que você disse que não tem fonte, mas tem alguma documentação? Talvez uma amostra .bashrc para usar o programa?

Como último recurso, tente

strings foo

(assumindo que foo é o nome do programa). Isto lista todas as “strings” no arquivo binário (veja strings(1) para detalhes). Isso produzirá muita saída; muito disso sem sentido. Você provavelmente deveria canalizá-lo em um pager; por exemplo, more ou less . Procure linhas que se pareçam com nomes de variáveis de ambiente - isto é, todas em maiúsculas, possivelmente incluindo sublinhados - e tente defini-las no diretório em que você instalou o programa.

    
por 12.03.2013 / 02:15