Проблема неработоспособности unetbootin указана в списке ошибок как вызванная выпуском Debian Jessie, не соответствующим стандартам именования файлов. Стандарты Joliet для имен файлов ограничивают длину до 64 символов. Debian Jessie включает имена файлов, которые выходят за рамки стандарта, используемого в unetbootin.
Комментарии разработчиков в списке ошибок, похоже, превратились в ненавистную -почтовую атаку на unetbootin вместо решения проблемы нарушения стандартов в Debian. Разработчики должны отказаться от войны -за территорию и решить проблему.
Для графических или настольных пользователей Debian и других дистрибутивов Linux важно предоставить графический инструмент для создания загрузочных образов.iso на флэш-накопителях USB -. Использование текстового «дд» не является приемлемым решением. K3B работал для этой цели в более ранних дистрибутивах Debian, но с Jessie это тоже не работает, потому что он отказывается подтверждать вставку носителя с USB-накопителем -.
Потому что на данный момент это не переменная окружения, а локальная переменная оболочки. Чтобы это работало, вам нужно export MY_TEST
его. Альтернативой может быть это:
env MY_TEST=ret./test
(В Bash также просто MY_TEST=ret./test
, но сenv
более переносимы между оболочками.)
Вы могли бы, кстати, проверить и это, заменив свой ./test
на env|grep MY_TEST
.
В Bash (, но не во всех других оболочках ), вы также можете сказать
Выполнение его в командной строке будет -в этом случае -эквивалентно тому, что вы делаете в сценарии.
Используйте:
export MY_TEST=ret; env|grep MY_TEST
, чтобы проверить, что я написал.
Предполагая, что ./test
это сценарий оболочки (того же диалекта оболочки ), вы также можете использовать
source./test
... чтобы перенести все операторы из ./test
в вашу текущую оболочку. Переменная shell/local также будет видна, потому что на самом деле вы не запускаете другой процесс.
Подоболочка имеет собственные настройки (, например. параметры оболочки и рабочий каталог ), но технически выполняются в одном и том же процессе. Так что здесь нет fork()
. Если есть fork()
аргументы командной строки и переменные окружения, можно было бы передать материал другому сценарию/исполняемому файлу.
Это отличается от случая, когда подоболочка наследует оболочки/локальные переменные родительской оболочки:
TEST=ret; (echo "shell variable=$TEST"; env|grep TEST)
Здесь подоболочка (внутри(...)
)увидит переменную, но это все еще не переменная окружения.
В первой команде
FOO_VARIABLE=foo;./test
вы присваиваете переменной оболочки FOO_VARIABLE
значение. Затем вы звоните ./test
. Поскольку FOO_VARIABLE
не экспортируется, это не переменная среды, и поэтому она не будет унаследована никаким скриптом или программой, которую вы запускаете.Вот почему ./test
не знает о переменной.
Вкратце :Вы устанавливаете переменную оболочки "здесь", но она не будет доступна "там" (в./test
).
В другой команде
FOO_VARIABLE=foo./test
вы устанавливаете значение FOO_VARIABLE
в среде ./test
(, т.е. вы создаете переменную среды для ./test
с именемFOO_VARIABLE
). Переменная не устанавливается в текущей среде ни как переменная среды, ни как переменная оболочки, только для процесса, полученного в результате запуска ./test
.
Вкратце :Вы установили переменную окружения "там" (в ./test
), но не "здесь".
Если у вас есть существующая переменная FOO_VARIABLE
, которую вы хотите, чтобы скрипт или программа наследовала как переменную окружения, вам придется export
ее унаследовать, т.е. сделать из нее переменную окружения:
FOO_VARIABLE=foo
export FOO_VARIABLE
./test
или, короче,
export FOO_VARIABLE=foo
./test
Это устанавливает переменную локально, а также делает ее доступной в любом созданном процессе (в ./test
, например ).