Я установил переменную среды в / etc / environment, но ее нет в printenv, используя bash.exe с Windows cmd. Почему? [дубликат]

На этот вопрос уже есть ответ:

Я использую WSL, и я новичок в Linux. Я установил переменную среды в / etc / environment под названием TESTVAR. Эта переменная требуется для некоторых проектов, и она отлично работает, когда я запускаю Bash напрямую.

Но если я запускаю команду Linux, используя командную команду Windows, например: bash.exe -c "printenv" , переменная не существует. Поэтому я не могу запускать свои команды с помощью cmd, иначе я получу много ошибок, потому что переменная содержит важный путь.

Что мне нужно делать?

Спасибо.

6
задан 2 November 2018 в 16:07

4 ответа

Есть несколько методов для bash в Windows

См. https://github.com/Microsoft/WSL/issues/24

По сути, вы добавляете их в ~ / .bashrc

Если это не работает, напишите ваш .bashrc

Я не знаю, почему / etc / environment не работает.

3
ответ дан 2 November 2018 в 16:07

WSL Bash работает так же, как Ubuntu Bash

РЕДАКТИРОВАТЬ: Оригинальный ответ ниже для исторических комментариев. Пантера ответ лучше. Ваш файл ~/.bashrc, который обрабатывается при каждом открытии терминала. В нем поместите команду:

MY_VARIABLE="some text"

Затем вы можете использовать echo $MY_VARIABLE, чтобы увидеть его настройку.


Я открыл новое окно терминала Bash в WSL, которое работает точно так же в Ubuntu 16.04, за исключением того, что заставка отличается тонкостью:

enter image description here

Как вы можете видеть после установки переменной среды, она может быть вызвана обычным образом.

Возможно, ваша большая проблема связана с вашей командой:

bash.exe -c "printenv"

На одном из моих ярлыков на рабочем столе Windows 10 я использую:

C:\Windows\System32\bash.exe -c "cd && DISPLAY=0:0 /mnt/e/bin/lock-screen-timer"

Возможно, вы что-то там упускаете ???


Ответ на комментарии

В ответ на ваши комментарии кому-то другому, моя система, как и ваша, показывает:

rick@alien:/mnt/c/Windows/System32$ echo $TERM,$NAME,$HOME
xterm-256color,alien,/home/rick

Так что вы не должны быть излишне заинтересованных сторон.

0
ответ дан 2 November 2018 в 16:07

Похоже, что если вы хотите использовать переменные среды Linux (Ubuntu), вы должны выполнить следующую команду:

bash --login -c "printenv"

Вы можете увидеть некоторые обсуждения, относящиеся к этой проблеме, в этом ссылка

0
ответ дан 2 November 2018 в 16:07

Старый пост, но если кто-то спотыкается здесь от Google ...

Начиная с версии Windows 17134, добавление флага -i к команде bash будет запускать команду оболочки как «интерактивную», которая вызовет полную среду linux, включая все настроенные файлы входа в систему (.bashrc, .bash_aliases и т. д.), которые могут содержать определения среды или переменных.

Исходный вопрос из Windows cmd должен иметь желаемый эффект: bash -ic printenv

См. Также: bash -ic 'man bash'

0
ответ дан 2 November 2018 в 16:07

Другие вопросы по тегам:

Похожие вопросы: