Como especifico qual versão de um programa deve ser executada?

1

Aqui está minha situação: Eu tenho duas versões de postgres instaladas, e com as duas versões, vêm dois terminais interativos psql diferentes.

Um está localizado em /usr/bin/psql e começa quando eu corro # psql -U username

Outra novidade está localizada em /usr/pgsql-9.1/bin/psql

Eu quero que o mais novo seja iniciado por padrão quando eu executo o psql a partir da linha de comando. Como isso pode ser feito? Obrigado!

Edit: estou usando centos

    
por Nyx 20.07.2012 / 23:51

2 respostas

2

Edite seu PATH para que /usr/pgsql-9.1/bin/ (o mais novo) vem antes de /usr/bin/ .

Uma alternativa menos segura ao gerenciador de pacotes é mover / remover / renomear o psql em /usr/bin/ e criar um symlink em /usr/bin/ para o novo (não testado):

> cd /usr/bin
# move the old one however you like
> ln -s /usr/pgsql-9.1/bin/psql .
    
por 20.07.2012 / 23:57
1

Como alternativa, para evitar links simbólicos e para evitar alterar seu $PATH , você pode adicionar seu comando à tabela de hash:

hash -p /usr/pgsql-9.1/bin/psql psql

Isto irá colocar o seu comando na tabela hash do comando e será executado antes de qualquer outro comando (na verdade, nenhuma pesquisa de caminho será executada).

Se você usou um comando chamado psql before, ele já está na tabela de hash e será o primeiro hit ao procurar por comandos. Nesse caso, remova a entrada antiga primeiro digitando

hash -d psql

e, em seguida, emita o comando acima. Você pode fornecer isso em .bashrc , se quiser.

    
por 22.07.2012 / 09:10