Cómo usar cd con variable de shell que contiene espacios

4

Estoy intentando crear una variable de entorno para una ruta que es larga, tiene un espacio y una sintaxis.

Probé lo siguiente:

export temp=/Users/username/Dropbox (Personal)

Y lo agregué a mi perfil.

También lo intenté:

export temp='/Users/username/Dropbox (Personal)'
export temp="/Users/username/Dropbox (Personal)"
export temp=/Users/username/Dropbox\ \(Personal\)

Ninguno de los trabajos anteriores. Mi objetivo final es escribir cd $temp o cp $temp .

    
pregunta undulaten 07.12.2015 - 07:26

2 respuestas

3

Puedes usar comodines:

export temp="/Users/username/Dropbox??Personal?"

o:

export temp="/Users/username/Dropbox*Personal*"

Ahora, cd $temp debería funcionar.

    
respondido por el Dag Høidahl 07.12.2015 - 10:48
12

Además de la primera asignación, los tres trabajan para asignar el valor correcto a $temp . Pero debido a la forma en que bash analiza la línea de comando, debe escribir

cd "$temp"

luego para hacer que funcione (lo que también significa que es una buena idea usar siempre "$var" en los scripts de shell).

En su caso, podría ser más fácil hacer un alias con

alias cdtemp='cd "/Users/username/Dropbox (Personal)"'

para usar con cd .

Sin embargo, para cp aún debe agregar el "". Para evitar esto, nombre sus carpetas sin usar caracteres con un significado especial para el shell o cree un enlace simbólico con ln -s ~/"Dropbox (Personal)" ~/DP .

    
respondido por el nohillside 07.12.2015 - 07:42

Lea otras preguntas en las etiquetas