cd no script bash

1

Eu trabalho em um ambiente Windows, mas prefiro usar bash no cygwin como meu shell. Para cd para um caminho longo eu sou dado em forma de windows eu digito:

cd $(cygpath -u 'Z:\Some\long\windows\path')

.. colando o caminho do Windows a partir da área de transferência. Como sou preguiçoso, tentei fazer um atalho assim:

#!/usr/bin/env bash
if [ -z "$1" ]; then
    exit 0
else 
    TGT=$(cygpath -u $1)    
    cd $TGT
fi
exit 0

.. então percebi que o cd ocorre no shell em que meu script é executado, em vez de o que eu chamei de modo que não tenha o efeito desejado. Como faço isso funcionar?

    
por StamfordBingo 16.12.2010 / 16:43

2 respostas

1

O cd 'Z:\Some\long\windows\path' simples deve funcionar na verdade. Você pode querer ativar a opção nodosfilewarning .

    
por 16.12.2010 / 17:09
1

Você pode defini-lo como um alias:

alias cd='cd $(cygpath -u "$1")'

Cole isso no seu arquivo .bashrc ou onde quer que você tenha seus aliases, e você deve ser de ouro.

Caso contrário, você precisaria colocar o diretório com o caminho do seu script personalizado anteriormente em seu caminho, em vez do diretório com o comando cd real (acho que o cygwin define o caminho em .bash_profile ); o que provavelmente não funcionará, já que o cd é um shell embutido.

    
por 16.12.2010 / 16:48