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

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

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, ~/Documentsisso 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 $HOMEestiver 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).

informação relacionada