Definindo minha variável, eu uso a notação de ponto ou ~?

0

Todos os meus arquivos de configuração do Hadoop estão localizados no seguinte:

./.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"

Para definir minha variável HADOOP_HOME, eu uso a notação de ponto ou ~?

HADOOP_HOME = "./.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"

ou

HADOOP_HOME = " ~/.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"
    
por user 24.09.2016 / 00:48

1 resposta

3
Primeiro, as designações de shell não permitem um espaço antes ou depois do nome da variável. Suas sugestões são erros de sintaxe em um script de shell.

O relativo não é uma boa ideia - os caminhos relativos são relativos ao diretório de trabalho atual, não ao seu diretório pessoal. Portanto, se você tiver cd em ~/Documents , isso significaria ~/Documents/.linuxbrew/… . Não o que você quer.

O segundo também não funciona, por causa de como as citações funcionam. A expansão de ~ é algo que se espera que o shell faça - geralmente, não deveria transformá-lo em uma variável de ambiente. Mas citando isso, você evitou essa expansão. Você precisa deixar o bit ~/ fora das cotações ou o uso alternativo $HOME (que será expandido entre aspas duplas. Portanto, qualquer um desses deve funcionar (pelo menos se $HOME estiver definido como seu diretório inicial, que quase sempre é):

HADOOP_HOME="$HOME/.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"
HADOOP_HOME=~/".linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"

Pessoalmente, acho o primeiro mais fácil de ler. Existe uma terceira opção - você não precisa de citações aqui; não há nenhum caractere especial no nome. Então está tudo bem (e perfeitamente legível) também:

HADOOP_HOME=~/.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/

Lembre-se também de exportar a variável ( export HADOOP_HOME ).

    
por 24.09.2016 / 01:41