
Todos os meus arquivos de configuração do Hadoop estão localizados a seguir:
./.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"
Para definir minha variável HADOOP_HOME, devo usar 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/"
Responder1
Primeiro, as atribuições do shell fazemnãopermita um espaço antes ou depois do sinal de igual. Ambas as suas sugestões tentariam executar um comando chamado literalmente HADOOP_HOME
.
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 inicial. Então, se você gostou cd
, ~/Documents
isso significaria ~/Documents/.linuxbrew/…
. Não é nada do que você deseja.
O segundo também não funciona, devido à forma como a cotação funciona. Expandir ~
é algo que se espera que o shell faça - geralmente não deveria transformá-lo em uma variável de ambiente. Mas, ao citá-lo, você evitou essa expansão. Você precisa deixar um ~/
pouco fora das aspas ou usar uma alternativa $HOME
(que se expandirá entre aspas duplas. Portanto, qualquer uma delas deve funcionar (pelo menos se $HOME
estiver definido para seu diretório inicial, o que quase sempre acontece):
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 – na verdade, você não precisa de nenhuma citação aqui; não há caracteres especiais no nome. Portanto, isso também é bom (e perfeitamente legível):
HADOOP_HOME=~/.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/
Lembre-se de exportar a variável também ( export HADOOP_HOME
).