На этот вопрос уже есть ответ:
Например, когда я запускаю экспорт экспорт PATH = $ PATH: $ GOROOT / bin: $ GOPATH / bin
или GOPATH = ~ / workspace / me / go
в какой файл это добавляется?
Когда Вы export
переменная, это не добавляется ни к какому файлу нигде.
Эффект export
, в противоположность простому присвоению переменной, переменная передачи переменной в среду всех дочерних процессов оболочки. Это не делает ничего больше; это не изменяет ни одного из конфигурационных файлов оболочки. После того, как оболочка и все ее дочерние процессы вышли, экспортируемой переменной не стало! При открытии новой оболочки, которая не является ребенком первой оболочки, та оболочка не будет помнить переменную.
На самом деле нет никакой потребности к export
СОЕДИНИТЕ КАНАЛОМ, потому что ПУТЬ уже является переменной среды. Это уже экспортировано; это автоматически будет переданным в среду дочерних процессов, и когда Вы измените его, дочерние процессы наследуют изменение также.
Вы видите это использование printenv
, команда для печати переменных среды:
$ foo=bar; echo $foo # set a variable
bar # the shell knows it
$ printenv foo # but it's not in the environment...
$ export foo; printenv foo # export the variable and check again
bar # there it is!
$ foo=new; printenv foo # change the variable
new # the change is inherited
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
$ PATH=/usr/bin; printenv PATH # printenv is in /usr/bin so keep that!
/usr/bin # the change was inherited
(Теперь я должен выйти из той оболочки для возвращения моего ПУТИ, или source /etc/environment
, потому что любая новая оболочка, которую я запускаю с этой оболочки, наследует ту переменную ПУТИ, которую я испортил...),
Если Вы хотите установить какую-либо переменную постоянно, необходимо добавить его к одному из конфигурационных файлов оболочки сами.
ПУТЬ является единственной переменной, насколько я знаю, это значением по умолчанию, начинаются /etc/environment
на Ubuntu. Я рекомендую не редактировать /etc/environment
устанавливать ПУТЬ, или если Вы делаете, стараться сделать резервное копирование исходного файла, потому что у Вас не будет никакого другого способа восстановить первоначальный тракт (если Вы не записали его где-нибудь или имеете потрясающую память). Также знайте, что никакие расширения не будут выполнены на содержании, таким образом, необходимо будет использовать полные пути, нет $PATH
или $GOPATH
или ~
. Если Вы запишете такие вещи, то они будут буквально в ПУТИ, и если Ваш ПУТЬ буквально $PATH:~/workspace/me/go
, Вы не сможете выполнить любые команды (кроме встроенных в оболочку), не используя их полные пути.
Я также не рекомендую установку PATH в .bashrc
, потому что каждая интерактивная оболочка Bash читает .bashrc
, и довольно распространено запустить новую оболочку с оболочки и так далее... Если Вы помещаете что-то как
PATH="$PATH:$HOME/foo"
в Вашем .bashrc
, Вы затем найдете это /home/user/foo
добавляется к Вашему ПУТИ многократно; каждый раз, когда оболочка запускает оболочку, ПУТЬ расширяется снова. Это могло в конечном счете заставить вещи замедлиться, особенно если бы Вы добавили много путей. Кроме того, только интерактивное чтение оболочек Bash ~/.bashrc
, таким образом, если Вы будете использовать оболочку кроме Bash или запускать скрипт без него являющийся дочерним процессом интерактивной оболочки Bash, то он не будет иметь этой переменной.
Вместо этого я рекомендую добавить строку к ~/.profile
расширять Ваш ПУТЬ. Этот файл только читается оболочками входа в систему; обычно, это только читается однажды, когда Вы входите в систему своей сессии, таким образом, ПУТЬ будет только добавлен к однажды, и все оболочки наследуют набор переменных среды там, не только интерактивные оболочки Bash. Обычно добавить переменные среды к этому файлу. Так, можно открыться ~/.profile
в текстовом редакторе, и добавляют строки, говоря что-то как:
GOPATH="$HOME/workspace/me/go"
PATH="$PATH:$GOPATH/bin"
Это - хорошая идея заключить путь в кавычки как показано, в случае, если любой из каталогов включает специальные символы (это - также хорошая идея создать каталоги, которые не имеют специальных символов на их имена, но, вещи происходят), и если Вы заключаете его в кавычки, Вы не можете использовать ~
как ярлык для /home/user
потому что двойные кавычки ("
) подавите расширение тильды, но можно использовать $HOME
вместо этого, потому что расширение параметра все еще выполняется и $HOME
станет /home/user
.
После редактирования сохраните файл и выход, выйдите из системы и въезжайте задним ходом или работайте source ~/.profile
, и Ваш ПУТЬ будет всегда включать /home/user/workspace/me/go
.
Настройки Shell обычно редактируются в $HOME/.bashrc
, который является sourced
каждой оболочкой Вы запускаете. Читать man bash
.
BTW, Вы должны иметь GOPATH
определение
GOPATH=~/workspace/me/go
Перед использованием GOPATH
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Кроме того, где имеет определение GOROOT
?