Como ter um caminho contendo espaços no PATH?

7

Eu tentei

export TASK=$HOME/Ubuntu\ One e export TASK="$HOME/Ubuntu One"

mas não funciona.

    
por daithib8 14.02.2011 / 19:39

5 respostas

10

Não é a definição com a qual você está tendo problemas, é o uso. Você precisa envolver onde quer que você esteja usando a variável entre aspas. Veja este exemplo:

oli@bert:~/Music$ export B="$HOME/Music/Yeah Yeah Yeahs/"
oli@bert:~/Music$ cd $B
-bash: cd: /home/oli/Music/Yeah: No such file or directory
oli@bert:~/Music$ cd "$B"
oli@bert:~/Music/Yeah Yeah Yeahs$
    
por Oli 14.02.2011 / 20:04
2

Tente

export TASK="$HOME/Ubuntu\ One"

Nas duas exportações que você emitiu, quando você faz eco de $ TASK, o resultado é

/home/user/Ubuntu One

Este não é o comportamento esperado porque quando você escreve algo como

cp $TASK/file somewhere_else/

o bash irá expandi-lo para

cp /home/user/Ubuntu One/file somewhere_else/

que é, obviamente, incorreto.

Portanto, precisamos colocar nosso caminho entre aspas, e para escapar do espaço.

    
por cako 14.02.2011 / 19:52
0

Esta página explica o problema em detalhes. É uma boa ideia ler atentamente o link

    
por geirha 14.02.2011 / 20:37
0

Este comportamento desajeitado e desajeitado é o resultado de uma escolha imprudente no nome do diretório "Ubuntu One". Infelizmente, parece haver nenhuma correção planejada para isso.

Uma opção é usar o Dropbox, que oferece funcionalidade semelhante.

    
por jjg 14.02.2011 / 22:17
0

Em vez de recorrer ao Dropbox, criei um link simbólico:

ln -s Ubuntu\ One UbuntuOne

No meu caso particular, eu queria importar módulos python de um diretório na minha nuvem:

ln -s Ubuntu\ One/pythonfiles pythonfiles
export PYTHONPATH="$PYTHONPATH:$HOME/pythonfiles/"

Concordo, é idiotice colocar espaços em nomes de arquivos linux.

    
por Stephen Gensemer 26.02.2013 / 22:40