Como altero a versão padrão de um executável unix?

3

Atualmente tenho duas versões do mesmo executável instalado em minha máquina OSX: uma está em usr / bin e a outra é uma instalação Macports. Quando executo which , o terminal retorna o local para a versão usr / bin. Existe uma maneira uniforme de alterar a instalação padrão ou cada aplicativo tem sua própria opção de comando para isso?

    
por nipponese 25.03.2012 / 18:45

3 respostas

7

Você precisa modificar a variável de ambiente PATH . Este é o padrão usado para procurar executáveis no Unix.

Quando algo no Unix procura um aplicativo que é fornecido com um caminho relativo (por exemplo: clang em vez de /usr/bin/clang ), PATH é dividido no caractere : e, em seguida, pesquisado na ordem. / p>

por exemplo: se o seu PATH for /opt/local/bin:/bin:/usr/bin , então clang procurará /opt/local/bin/clang e, se isso estiver faltando, /bin/clang , etc.

Tecnicamente, todo processo tem seu próprio jeito de fazer isso - nada os força a seguir a convenção de usar $PATH , mas tem sido assim por tempo suficiente que praticamente tudo acontece.

A outra consideração é que todo processo tem um ambiente próprio - uma cópia de PATH incluída nele. Isso inclui o launchd, que é o responsável pela UI e qualquer aplicativo lançado a partir disso.

Então, você pode modificar isso em seus scripts init de shell ( .bash_profile , .bashrc , .profile , etc), mas isso não funcionará se, por exemplo, você iniciar o vim ou emacs como um aplicativo GUI.

Você também pode modificar /etc/paths ou adicionar um arquivo a /etc/paths.d e isso fará parte do ambiente padrão para tudo - incluindo todos os aplicativos iniciados no Mac. (Você precisa sair e voltar a ter que permear cada parte do sistema, no entanto.)

    
por 25.03.2012 / 18:59
2

Se a modificação de $PATH não for viável por qualquer motivo, você poderá criar um alias que chama o executável no diretório apropriado.

    
por 25.03.2012 / 18:55
0

A variável PATH define onde seus comandos estão.

Você pode modificar essa variável no arquivo /etc/paths . Você deve verificar se /usr/bin está antes dos outros.

    
por 25.03.2012 / 18:49