É possível adicionar um único executável, em vez de um diretório inteiro, ao meu $ PATH?

9

Eu tenho o XAMPP instalado no OSX e, por padrão, ele precede o caminho para seu próprio bindiretório (cheio de vários utilitários) para minha $PATHvariável:

# Add path to XAMPP PHP version
export XAMPP_PHP=/Applications/XAMPP/xamppfiles/bin
export PATH="$XAMPP_PHP:$PATH"

Infelizmente, um de seus utilitários é chamado HEAD, que graças ao sistema de arquivos que não diferenciahead maiúsculas de minúsculas do OSX, colide com o comando Unix . O XAMPP não tem nenhuma HEADrelação com head(acho que emite uma solicitação HTTP HEAD).

Claro, eu quero usar o headXAMPP e ambos , então simplesmente alterei a ordem das variáveis ​​do caminho:

export PATH="$PATH:$XAMPP_PHP"

Isso me permite usar head, mas agora há uma colisão entre a versão do PHP do XAMPP (por exemplo, 5.5) e a versão pré-instalada do PHP que acompanha o OSX (5.3). Como o caminho para 5.3 vem primeiro, ele acaba tendo precedência.

Meu plano para uma solução hackish era acrescentar o caminho completo do arquivo + nome apenas a versão do PHP do XAMPP e , em seguida, anexar o restante do caminho após $PATH:

export PATH="/Applications/XAMPP/xamppfiles/bin/php:$PATH:$XAMPP_PHP"

Isso parece não funcionar. Quando eu reinicio o bash e verifico php -v, ele ainda está no PHP 5.3 - a versão interna. É possível adicionar um caminho de arquivo específico $PATH?

alexw
fonte
4
Não, $PATHpode consistir apenas em diretórios. Você pode simplesmente ligar o executável específico que deseja em um diretório existente no seu $PATH.
larsks

Respostas:

8

Supondo que isso echo "$PATH"apareça /usr/local/binno seu caminho, e considerando que este é o seu laptop pessoal:

Crie um link simbólico /usr/local/binque aponte para o executável que você deseja.

ln -s /Applications/XAMPP/xamppfiles/bin/php /usr/local/bin/php

Se for um computador compartilhado e você não quiser afetar outros usuários, recomendo configurar uma extensão personalizada para o PATH ~/.bash_profile. Eu mesmo tenho um:

$ grep PATH ~/.bash_profile 
export PATH="$PATH:$HOME/.bin"

Depois, posso colocar meus links simbólicos personalizados, scripts etc. ~/.bine eles serão executados conforme o esperado (sem substituir os comandos do sistema que existem anteriormente no meu PATH).

Coloquei o .no início .binpara não precisar ver o diretório ao navegar no Finder.

Curinga
fonte