Я пытаюсь создать сценарий bash, содержащий некоторые переменные среды в python. Я сделал еще один шаг, чтобы сделать это. Но, кажется, что одна из переменных неверна, как видно из данного фрагмента.Обнаружение измененных переменных среды в python
COLORTERM=gnome-terminal
mc=() { . /usr/share/mc/mc-wrapper.sh
}
_=/usr/bin/env
Я использую следующий код для настройки текущей среды.
import os
import pprint
import subprocess
command = ['bash', '-c', 'source init_env && env']
proc = subprocess.Popen(command, stdout = subprocess.PIPE)
for line in proc.stdout:
(key, _, value) = line.partition("=")
os.environ[key] = value
proc.communicate()
'
Если изменить код выше немного, как положить условие:
for line in proc.stdout:
(key, _, value) = line.partition("=")
if not value:
continue
os.environ[key] = value
то все работает, но окружающая среда поврежден из-за одного недостающий кронштейн, как можно видеть, из фрагмента переменной среды, в которой скобка появляется на новой строке. Из-за этой коррупции, если я запускаю некоторые другие команды, как
os.system("ls -l")
это дает мне следующее сообщение об ошибке
sh: mc: line 1: syntax error: unexpected end of file
sh: error importing function definition for `mc'
Что может быть возможные решения этой проблемы?
Большое спасибо
Откуда взялся этот отрывок? Если в сценарии оболочки есть синтаксическая ошибка, не можете ли вы исправить сценарий оболочки? Но это выглядит как действительная функция оболочки, только напечатанная в форме, которая не подходит для прямой оценки. – tripleee
Это не искаженное, то есть его значение происходит через несколько строк. Разрешены новые строки. Ваш вызов 'ls' выдает ошибки, потому что вы назначили недействительный элемент body для функции« mc »во время выполнения инструкции' os.environ [key] = value'. Что вы пытаетесь сделать здесь? – hamstergene
Я просто хочу, чтобы моя переменная окружения появлялась в среде python. Есть ли другой способ сделать это? Или как я буду иметь дело с значением переменной среды, которое охватывает несколько строк? – Shahzad