Как правильно настроить переменную окружения GOPATH в Ubuntu и какой файл редактировать?
Настройка GOPATH в Ubuntu: пошаговое руководство
Вы правы — просто export GOPATH=$HOME/go работает только для текущей сессии. Чтобы настройка сохранялась, нужно добавить эту команду в один из конфигурационных файлов оболочки. Вот правильное решение:
1. Определите, какую оболочку вы используете
Большинство современных версий Ubuntu используют Bash. Проверьте:
echo $SHELL
# Вывод: /bin/bash (или /bin/zsh)
2. Редактируем правильный файл
- Для Bash:
~/.bashrc(рекомендуется) или~/.profile - Для Zsh:
~/.zshrc - Для всех пользователей (осторожно):
/etc/environment
3. Добавьте настройки в .bashrc
Откройте файл в редакторе:
nano ~/.bashrc
Добавьте в конец файла следующие строки:
# Go configuration
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
4. Примените изменения
После сохранения файла выполните:
source ~/.bashrc
Или просто откройте новый терминал.
5. Проверьте настройку
echo $GOPATH
# Должно вывести: /home/ваш_пользователь/go
go env GOPATH
# Тот же результат
Почему именно .bashrc?
Файл .bashrc выполняется при каждом открытии интерактивного терминала (не login shell). Это идеально для переменных окружения, связанных с разработкой. .profile выполняется только при входе в систему (login shell), поэтому в некоторых случаях настройки из него могут не подхватиться.
Важное замечание про Go 1.16+
Начиная с Go 1.16, GOPATH по умолчанию равен $HOME/go, если не указан явно. Однако для работы go get и установки пакетов он всё ещё необходим. Кроме того, без GOPATH вы не сможете использовать go install для установки утилит из сторонних пакетов.
Пример рабочей структуры после настройки
mkdir -p $GOPATH/src/github.com/gorilla
cd $GOPATH/src/github.com/gorilla
git clone https://github.com/gorilla/mux.git
cd mux
go install
Теперь ваш код будет работать:
package main
import (
"fmt"
"github.com/gorilla/mux"
)
func main() {
r := mux.NewRouter()
fmt.Println("Router created:", r)
}
Альтернатива: Go Modules (современный подход)
Вместо настройки GOPATH вы можете использовать Go Modules. Создайте проект вне $GOPATH/src:
mkdir ~/myproject
cd ~/myproject
go mod init myproject
go get github.com/gorilla/mux
Этот подход работает без явной установки GOPATH и рекомендуется для новых проектов.
Использование /etc/environment для глобальной настройки
Если вы хотите, чтобы GOPATH был доступен всем пользователям системы (например, на сервере), можно отредактировать файл /etc/environment. Этот подход требует прав суперпользователя.
sudo nano /etc/environment
Добавьте строку:
GOPATH=/home/ваш_пользователь/go
Важно: В этом файле нельзя использовать переменные типа $HOME — только абсолютные пути. Также не используйте команды export — просто указывайте ПЕРЕМЕННАЯ=значение.
После редактирования перезагрузите систему или выполните:
source /etc/environment
Недостатки этого подхода:
- Требует sudo — неудобно для частых изменений
- Не добавляет
$GOPATH/binвPATH— это нужно делать отдельно в.bashrcили.profile - Переменные из
/etc/environmentприменяются ко всем пользователям, что может вызвать конфликты
Рекомендация: Для личного использования лучше ~/.bashrc. Для серверов с одним пользователем Go — ~/.profile. /etc/environment используйте только если абсолютно необходимо сделать переменную глобальной для всех.
Ответов пока нет.
Войдите чтобы оставить ответ