Установка моей переменной, я использую точечную нотацию или ~?

Все мои конфигурационные файлы Hadoop находятся в следующем:

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

Чтобы установить переменную HADOOP_HOME, использую ли я точечную нотацию или ~?

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

или

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

Во-первых, назначения оболочки не допускают пробела до или после имени переменной. Оба предложения – это синтаксические ошибки в сценарии оболочки.

Относительный – это не очень хорошая идея. Относительные пути относятся к текущему рабочему каталогу, а не к вашему домашнему каталогу. Так что, если у вас есть cd 'd в ~/Documents , то это будет означать ~/Documents/.linuxbrew/… Совсем не то, что вы хотите.

Второй тоже не работает, из-за того, как работает цитирование. Расширение ~ – это то, что ожидается от оболочки – обычно это не должно превращаться в переменную среды. Но, цитируя это, вы предотвратили это расширение. Вам нужно оставить ~/ бит из кавычек или альтернативно использовать $HOME (который будет расширяться внутри двойных кавычек. Таким образом, любой из них должен работать (по крайней мере, если $HOME установлен в ваш домашний каталог, что почти всегда):

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

Лично я считаю, что первое легче читать. Существует третий вариант – на самом деле вам не нужны цитаты; в имени нет специальных символов. Так что это прекрасно (и прекрасно читается) тоже:

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

Не забудьте также экспортировать переменную ( export HADOOP_HOME ).