'setx' эквивалент в Ubuntu

7

У Windows есть команда powershell, называемая setx , которая Создает или изменяет переменные среды в пользовательской или системной среде.

У Ubuntu есть аналогичная команда, т. е. не используя nano или vi , только одну строку для добавления или обновления переменной окружения в целом.

Реализованное решение

Одна строка для добавления / обновления

grep env_name /etc/environment && sed -i.bak 's/env_name=.*/env_name="env_value"/' /etc/environment || echo 'env_name="env_value"' >> /etc/environment
    
задан Ayman 28.11.2017 в 15:01
источник

3 ответа

12

Вы можете сделать это просто, объявив его новым в командной строке или повторно объявив его. Например, если вы хотите добавить ~/testfolder к переменной пути, вы просто можете ввести его в свой текущий терминал (это только пример):

PATH="$HOME/testfolder:$PATH"

Это, конечно, только изменит его на время, когда вы сказали, что сеанс терминала открыт. Обратите внимание на использование $ здесь, вы оставляете его для объявления, но если вы хотите его отобразить, вам нужно добавить $ , чтобы развернуть его содержимое.

Если вы хотите объявить их более прочными и общими, вы можете добавить их в свой файл ~/.bashrc (только для вас) или в /etc/bash.bashrc (в системной системе), например, если вы хотите, чтобы они учитывали только вас или для всех пользователей. Другой вариант - добавить его в файл .profile (только для себя), где он будет жизнеспособен с момента входа в систему. Вы можете сделать это с помощью echo , например, если вы уверены, что эта переменная уже не установлена или если вы создаете новые (только пример):

echo "variable=value" >> /path/filename

Если вы хотите отредактировать файл за пределами своего пользовательского каталога, в случае, если вы хотите отредактировать /etc/bash.bashrc , вам нужно использовать sudo , и поэтому вы не можете просто использовать «здесь документ», так как это не сработает , вместо этого используйте следующую строку:

echo "variable=value" | sudo tee -a /path/filename

Если переменная, однако, уже существует, вы можете изменить ее с помощью команды sed (также только пример):

sed -i.bak 's/variable=value/variable=new-value/' /path/filename

Это отредактирует переменную в файле, но создаст резервную копию до редактирования. Если вы меняете файлы вне вашего каталога пользователя с помощью sed, вам нужно использовать sudo в большинстве случаев, поэтому строка будет выглядеть следующим образом:

sudo sed -i.bak 's/variable=value/variable=new-value/' /path/filename

Удаление переменной из файла может быть выполнено с помощью sed , просто оставьте вторую часть регулярного выражения пустым:

sed -i.bak 's/variable=value//' /path/filename

Если ваши заинтересованные переменные окружения установлены, вы можете использовать команду env для их перечисления, ( set -o posix ; set ) | less или sh -c set . Все три дают разные объемы вывода: ( set -o posix ; set ) | less возвращает большинство переменных, которые фактически установлены.

    
ответ дан Videonauth 28.11.2017 в 15:14
источник
9

Нет прямого эквивалента setx /m , но есть способы выполнить то, что setx /m делает.

setx /m помещает variable=value в HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment . Non / m (то есть для пользователя) setx просто помещает variable=value в HKCU\Environment .

Вы специально попросили «системную систему». Для этого вы добавите пару переменная-значение либо в /etc/environment OR, либо в /etc/profile.d/<yourfile> . Первый оценивается pam, а последний оценивается /bin/sh . Таким образом, в /etc/profile.d/<yourfile> вы добавите variable=value; export variable . (bash также позволяет export variable=value ). Для /etc/environment вы добавите variable=value .

Эквиваленты каждого пользователя: ~/.pam_environment и ~/.profile .

См. также: Ссылка

    
ответ дан Cyrus Patel 28.11.2017 в 19:22
источник
7

Вы можете экспортировать переменные среды в командной строке, но это не повлияет на эффективную среду в уже запущенных процессах, только в текущем процессе и его подпроцессах. Поэтому на практике вам часто приходится переписываться при изменении переменных среды.

    
ответ дан Gunnar Hjalmarsson 28.11.2017 в 15:19
источник

Ознакомьтесь с другими вопросами по меткам