Como alternar rapidamente caminhos (no Bash)

1

Às vezes, geralmente ao instalar pacotes com brew , desejo desabilitar / remover certas partes do caminho e depois restaurá-las. Eu não fui capaz de encontrar uma maneira fácil de fazer isso, e enquanto eu poderia escrever meu próprio script bash para fazer isso, eu estou querendo saber se há uma maneira mais fácil.

Comportamento desejado (ou algo parecido):

$ echo $PATH
/Users/mchenja/anaconda/bin:/usr/local/bin:/(and so on)
$ changepath "brew"; echo $PATH
/usr/local/bin:/(and so on)
$ changepath "anaconda"; echo $PATH
/Users/mchenja/anaconda/bin:/usr/local/bin:/(and so on)

Aqui, "brew" e "anaconda" são apenas palavras-chave definidas pelo usuário para manipular um caminho salvo.

O bash oferece um método integrado de fazer isso? E quanto a um complemento externo?

    
por mchen.ja 26.04.2015 / 04:05

3 respostas

1

Dependendo de quão complicado o seu caso de uso realmente é, você pode definir e / ou alterar uma variável para apenas um comando prefixando o comando com o valor da variável. Por exemplo,

1 prompt> X=1
2 prompt> X=2 some_command arg1 arg2
3 prompt> echo $X

a variável X será 2 dentro de some_command, mas retornará para X = 1 na linha 3. Assim, você pode alterar temporariamente o PATH para apenas um comando para remover a string de prefixo correspondente (supondo que sua exigência seja tão simples quanto esta ), por exemplo,

1 prompt> PATH=${PATH#/Users*:} brew ...args...

Isso removerá do PATH o prefixo que começa com "/ Users" terminando no primeiro ":" ". Por exemplo, em vez de /Users/foo/bar:/usr/bin/.... , você terá apenas /usr/bin/.... . Se isso é mais fácil do que aliases é questionável, mas pode ser incorporado em seus aliases / functions / scripts. A principal vantagem é que modifica dinamicamente o seu PATH de qualquer que seja a configuração atual; mas essa é a principal desvantagem também: -)

    
por 03.05.2015 / 10:41
3

Trocar o conteúdo de uma variável é como a coisa mais fácil de se fazer em qualquer idioma. Não há nenhum recurso especial no bash para trocar o conteúdo da variável PATH porque a troca do conteúdo de qualquer variável é muito fácil de fazer.

Por exemplo, você pode adicionar isso ao final do seu script de inicialização de shell favorito:

DEFAULTPATH="$PATH"
alias dp="PATH=\"$DEFAULTPATH\""
alias ap="PATH=\"/Users/mchenja/anaconda/bin:$DEFAULTPATH\""
alias bp="PATH=\"/usr/local/bin:$DEFAULTPATH\""

Agora, em tempo de execução, você pode digitar ap , bp ou dp para alternar entre seus caminhos anaconda, brew e PATHs padrão, respectivamente.

    
por 26.04.2015 / 05:44
1

Crie arquivos individuais com a variável PATH desejada e armazene-os em um diretório em sua pasta pessoal. Exemplo:

cat ~/ch_path.d/brew

PATH="/usr/local/bin:/(and so on)"
export PATH

Então você pode pesquisar o caminho que quiser

source ~/ch_path.d/brew
    
por 03.05.2015 / 13:22