Bash export не работает

Содержание
  1. Команда export — экспорт переменных и функций дочерним процессам в Linux.
  2. Не работает команда export из командного файла.
  3. Re: Не работает команда export из командного файла.
  4. Re: Не работает команда export из командного файла.
  5. Re: Не работает команда export из командного файла.
  6. Re: Не работает команда export из командного файла.
  7. Re: Не работает команда export из командного файла.
  8. Re: Не работает команда export из командного файла.
  9. экспорт переменных не работает в Bash
  10. 1 ответ 1
  11. bash: экспорт не действительный идентификатор [dубликат]
  12. 6 ответов
  13. export PATH
  14. firefox экспортировать только мной измененные настройки
  15. Экспорт бд из sqlite в xml
  16. Emacs to ODT failed
  17. OpenShot export without re-encode возможно?
  18. Помогите с экспортом таблицы из datagridview в excel
  19. Скачать с гитхаба *одну* директорию, без истории, в данный момент её истории
  20. Сохранение(перенос) настроек программы в другом каталоге.
  21. Fedora НЕ запрещена в Крыму
  22. Переменный окружения в perl
  23. Подсчёт возраста в bash’е
  24. export mylib из скрипта
  25. export -f непередаетфункцию.
  26. Экспорт кучи текстовых файлов в Markdown + статический блог
  27. В каком файле редактировать PATH. Debian jessie

Команда export — экспорт переменных и функций дочерним процессам в Linux.

export — это одна из встроенных команд оболочки пользователя bash, и предназначена для экспорта переменных и функций текущего процесса в дочерний процесс. На практике, команда export применяется в качестве основного средства для определения настроек конкретных приложений. По умолчанию, в операционных системах семейства Linux, переменные, созданные в среде родительского процесса не передаются автоматически дочернему. Чтобы переменная, созданная процессом A , была доступна запущенному им процессу B , необходимо перед запуском дочернего процесса B выполнить экспорт данной переменной с помощью команды export . Так, например, родительский процесс может определить путь к рабочему каталогу какой-либо программы, создав переменную и выполнив ее экспорт перед запуском.

В Linux, все процессы, кроме процесса init могут быть как дочерними, так и родительскими. Процесс init является родительским процессом для всех остальных, запускаемых процессов, имеет идентификатор PID равный 1 и используется для запуска всех прочих процессов в ходе загрузки системы и регистрации пользователей. Любой другой процесс всегда имеет родительский процесс, и может иметь дочерний.

Для получения идентификатора текущего процесса командной оболочки можно воспользоваться командой:

в результате отобразится следующая информация:

6272 — идентификатор процесса ( PID )
Если запустить новую командную оболочку, например bash из текущей, командой

и снова выполнить команду

то отобразится идентификатор текущего процесса в виде другого числа, например 7224
Команда ps позволяет выводить информацию о связанных родительских и дочерних процессах с использованием параметра —ppid :

ps —ppid 6272 — отобразить список процессов, для которых родительским является процесс, PID которого равен 6272:

PID TTY TIME CMD

7224 pts/0 00:00:00 bash

Если же выполнить команду, для отображения списка процессов, для которых родительским является процесс init ( PID=1), то мы получим список всех автоматически стартовавших на данный момент времени, процессов:

В данном списке не будет процессов, порожденных дочерними процессами процесса init . Для получения полного списка процессов в соответствии с их иерархией можно воспользоваться параметром -H :

ps –e -H — отобразить дерево ( -H )всех процессов ( -e ) на данный момент времени.

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

Ниже приведен простой пример экспорта переменных из текущей командной оболочки в дочернюю:

y=yandex.ru — установить значение переменной y , содержащее строку “ yandex.ru ”

x=google.com — установить значение переменной x , содержащее строку “ google.com ”

export x y — выполнить экспорт переменных x и y

bash — запустить новый экземпляр командной оболочки bash

echo $x $y — отобразить значение переменных x и y

google.com yandex.ru — результат выполнения команды, т.е. значения переменных x и y созданных родительским процессом.

Если выполнить запуск нового экземпляра командной оболочки bash , то в нем также будут доступны значения экспортируемых переменных x и y. И так далее – все процессы нижнего уровня иерархии могут использовать значения экспортированных переменных.

Команда export позволяет просматривать, удалять или добавлять элементы списка экспортируемых переменных.

export –p — вывести список всех экспортируемых переменных. То же самое выполняется, если не задан никакой ключ.

export –n x — удаление заданной переменной x из списка экспорта.

export –f — экспорт переменной в качестве функции.

— Создание и экспорт функции testf :

y=yandex.ru — создание переменной y , принимающей строковое значение yandex.ru .

testf() — создание функции testf , использующей переменную y .

testf — выполнение функции testf , использующей переменную y в текущей командной оболочке.

ping yandex.ru — результат выполнения функции testf .

export -f testf — экспорт функции testf .

export y — экспорт переменной y, используемой в функции testf .

bash — запуск дочерней оболочки bash.

testf — выполнение функции testf .

ping yandex.ru — результат..

Обычно, определение значений и экспорт переменных выполняется одной командой:

export y=yandex.ru — создание и экспорт переменной y , принимающей строковое значение yandex.ru .

— Изменение переменной PATH

Наиболее широко команда export применяется для объявления и модификации переменной оболочки PATH:

export PATH=$PATH:/home/localusr/bin — добавить к существующему пути поиска исполняемых файлов, определяеммому переменной PATH каталог /home/localusr/bin .

— Удаление экспортируемой переменной .

export –n y — удаление из списка экспорта переменной y .

Читайте также:  Как настроить качество камеры видеонаблюдения

Для получения справочной информации по использованию команды export , используйте:

Общие настройки оболочки для всех пользователей определяются содержимым файла /etc/profile . Обычно в нем определяется значение переменной PATH задающей пути поиска исполняемых файлов. В системах с несколькими оболочками, настройки для bash определяются содержимым файла /etc/bashrc . Для конкретных пользователей настройки определяются содержимым файлов в домашнем каталоге:

/.bash_profile — индивидуальные пользовательские настройки среды окружения. В этом файле пользователи могут добавить дополнительные конфигурационные параметры, либо изменить настройки, заданные по умолчанию, например свое значение переменной PATH.

/.bash_login — настройки, активируемые при входе в систему.

/.profile — конфигурационные настройки оболочки данного пользователя.

/.bashrc — конфигурационные настройки оболочки bash данного пользователя.

/.bash_logout — команды, выполняемые при выходе из системы.

Если вы желаете помочь развитию проекта, можете воспользоваться кнопкой «Поделиться» для своей социальной сети

Источник

Не работает команда export из командного файла.

Помогите, ни чего не могу понять.
Запускаю. например
export KEY_COUNTRY=RU
из командной строки — работает (смотрю export -p)
то же самое из командного файла — не работает.
Может я делаю что-то не так.

Re: Не работает команда export из командного файла.

Если Вы слишком умный — то — ответьте на вопрос.
А фигню говорить и в другом месте можно.

Re: Не работает команда export из командного файла.

Ладно, всем спасибо — помогли в другом месте разобраться.

Re: Не работает команда export из командного файла.

Что значит «из командного файла»? Если поместить строку с export в шелл-скрипт, а потом запустить его, то по окончании его выполнения все окружение, в рамках которого работал скрипт (иными словами окружения bash, который интерпретировал скрипт), будет уничтожено.

Но скрипт примерно такого содержания будет работать:

#!/bin/sh
declare -x aaa=»111″
export | grep aaa

Re: Не работает команда export из командного файла.

Кросс-посты — зло. Терпеливо дождитесь ответа, если лень ман почитать.

Re: Не работает команда export из командного файла.

В первой строке скрипта — /bin/sh ? Там «export» нету..

Re: Не работает команда export из командного файла.

> Если поместить строку с export в шелл-скрипт, а потом запустить его, то по окончании его выполнения все окружение, в рамках которого работал скрипт (иными словами окружения bash, который интерпретировал скрипт), будет уничтожено.

Все правильно, так оно и было.
Просто, если выполнить команду
. ./script
то параметры export переходят в текущее окружение.

Источник

экспорт переменных не работает в Bash

приведенный ниже код не работает в bash, где, работая с sh, он пробовал много обходных путей, таких как вставка после чтения канала, но не сработал.Переменные не экспортируются. кто-нибудь может подсказать что нужно сделать

1 ответ 1

Здесь есть ряд ошибок. Позвольте мне пройти их по порядку:

Пробелы не допускаются вокруг = в назначениях оболочки, поэтому это (и ряд последующих назначений) не сработает. Что это на самом деле делает, так это пытается запустить команду с именем RECORD с «=» и значением $1 качестве аргументов. В раковинах пространства очень значительны; в большинстве мест они либо полностью необходимы, либо полностью запрещены. Пока вы не узнаете, где они необязательны, будьте очень осторожны, копируя пробелы точно из любых примеров, из которых вы работаете.

Элементы конвейера (например, команда read здесь) выполняются в подоболочках, что означает, что присвоенные им переменные происходят в подоболочке . и теряются при выходе из подоболочки. Кроме того, вы не можете иметь пробел в середине имени переменной ( var 2 ).

Вы можете сделать это без трубы, как это:

(Хотя обратите внимание, что — это башизм, и он доступен не во всех оболочках. Обязательно начните свой сценарий с #!/bin/bash НЕ #!/bin/sh .)

Даже после удаления блуждающего пространства из второй строки, они не делают ничего полезного. Они принимают значения переменных, выводят их, записывают выходные данные команд echo и вставляют их обратно в переменные. По пути могут произойти некоторые изменения (например, расширение по шаблону), но я почти уверен, что это не то, чего вы хотите, чтобы происходило. (На самом деле, вы почти всегда должны помещать ссылки на переменные в двойные кавычки, чтобы предотвратить такие вещи, как неожиданное расширение подстановочных знаков и разбиение слов.) Так что просто потеряй это.

export указывает оболочке экспортировать значение этих переменных в команды, которые вы запускаете из этой оболочки — то есть они экспортируются по иерархии процессов, а не до того, что выполнялось. Но в этом случае функция выполняется в том же процессе, что и основная часть скрипта, поэтому нет необходимости в импорте для совместного использования переменных в обоих направлениях. Пока переменные не объявлены как local , они автоматически доступны для остальной части скрипта. Так что потерять это тоже.

(Обратите внимание, что нет способа экспортировать переменные вверх по иерархии процесса. То, что происходит в подоболочке или другом подпроцессе, остается в этом подпроцессе.)

Вам нужно $ перед EACH_RECORD , иначе он будет просто передан в виде литеральной строки.

Источник

bash: экспорт не действительный идентификатор [dубликат]

Я пытаюсь настроить cocos2dx в Ubuntu 14.04 LTS, но после установки переменных окружения (в .bashrc) я начинаю получать эту ошибку:

bash: export: dev/cocos2d-x-3.2/tools/cocos2d-console/bin’: not a valid identifier bash: export:/home/john/android’: not a valid identifier bash: export: dev/android-ndk-r10b’: not a valid identifier bash: export:dev/adt-bundle-linux-x86_64-20140702/sdk’: not a valid identifier

Читайте также:  Наушники ритмикс не работают

И я не знаю, что сделать это.

6 ответов

Похоже, вы не сделали этого правильно.

Ошибки, которые вы получаете, означают, что пути (например, /home/john/android) являются которые используются как имена переменных, а не как значения, назначенные им.

Правильный синтаксис для назначения переменной — NAME=value. Правильный синтаксис для экспорта переменной (с любым значением, если оно уже было назначено) — export NAME. Правильный синтаксис для назначения и экспорта переменной (с назначенным значением) одновременно export NAME=value.

Я подозреваю, что вы пытаетесь сделать третью вещь, но используя неправильный синтаксис. Четыре распространенных ошибки, которые могут вызвать ошибки, например, то, что вы видите:

Использование пробелов вместо =. export NAME value неверно; value затем интерпретируется как имя последующей переменной для экспорта. (Это происходит потому, что export NAME1 NAME2 является правильным синтаксисом для экспорта нескольких переменных.) Помещение пробелов вокруг =. Во многих языках программирования, как правило, так и стилистически предпочтительнее использовать операторы с пробелами большую часть времени. Но чтобы присвоить значение переменной в сценарии оболочки (или в другой ситуации, когда вы выдаете команды оболочки), это недопустимо. NAME = value (в команде export или иначе) не будет работать; вы должны использовать NAME=value. (export NAME = value пытается экспортировать переменные с именем NAME, = и value. К счастью, это никогда не кажется успешным, поскольку попытка экспортировать переменную с именем = является синтаксической ошибкой. Напротив, export NAME= value , но не присваивает value NAME — вместо этого он присваивает пустую строку нулевой длины NAME и экспортирует ее, а отдельно экспортирует переменную value. Оба являются распространенными ошибками. ) Разделение частей значения переменной пробелами. Переменные среды могут содержать пробелы, но на практике они редко используются в качестве разделителей полей в переменных среды. Если одна переменная намеренно содержит несколько путей, обычно : используется для их разделения. Не цитирование пробелов при присваивании переменных. Иногда значение переменной среды должно содержать пробел. Например, это может быть имя каталога, в котором действительно содержится пробел. В этом случае необходимо процитировать любые пробелы. Один из способов сделать это — предшествовать им \. См. Как защитить круглые скобки, переданные команде cd? и Невозможно удалить файл для информации по другим путям — применяются методы, представленные в ответах, хотя ни один вопрос не связан с назначением переменных среды. Например, несколько способов экспортировать переменную среды SILLYPATH со значением /home/ek/silly name/bin: export SILLYPATH=/home/ek/silly\ name/bin export SILLYPATH=’/home/ek/silly name/bin’ export SILLYPATH=»/home/ek/silly name/bin» Часто, когда папка, которую вы должны использовать в оболочке или назначать широко используемой среде переменная содержит пробел, это может быть полезно при переименовании. (Но иногда это непрактично или нежелательно.)

Я подозреваю, что это может быть достаточной информацией для вас, чтобы найти и исправить ошибку в вашем файле .bashrc. Если вам нужна дополнительная помощь, вы должны, конечно, разместить полное содержимое этого файла для анализа. (Только по совпадению ваша проблема оказалась достаточно часто встреченной и с достаточно прозрачным сообщением об ошибке, чтобы сделать общий ответ таким, как этот.)

Источник

export PATH

Вопрос касается export. Export превращает локальную переменную в переменную окружения. В bashrc есть такая строчка —

нахрен здесь export? ведь PATH и так переменная окружения. Я раньше думал, что для того, чтобы и значение этой переменной экспортнулось, но сегодня заметил, что и без export дочерняя сессия получает это значение — допустим, если написать

то значение будет ru_RU.UTF-8 без всякого экспорта.

То есть, как я понял, export просто превращает локальную переменную в переменную окружения и смысла его запускать для уже существующих переменных окружения нет, то есть бессмысленно писать export PATH, но зачем-то он везде прописан? ладно, предположим, что PATH до этого не задана но ведь сама переменная PATH=$PATH:/foo:/bar намекает, что используй существующую переменную PATH.

firefox экспортировать только мной измененные настройки

хотел перекинуть мои настройки из about:config в waterfox, но не нашел пока в гугле ничего интересного. Вроде не такая уж сложная вещь… Может аддон есть какой?

Экспорт бд из sqlite в xml

всем привет!
А есть какой-нибудь инструмент для экспорта данных БД sqlite в xml? Желательно, консольный.
Спасибо.

Emacs to ODT failed

Господа емаксеры, кто пользуется выгрузкой в ODT ваших org-заметок?

У вас нормально происходит, если в заметке есть внутренняя ссылка? Мой емакс ломает выгрузку, говорит, что ссылка не обнаружена.

OpenShot export without re-encode возможно?

Казалось бы простая вещь. Но может ли этот кусок говна ее сделать?

Помогите с экспортом таблицы из datagridview в excel

Нужно экспортировать таблицу из datagridview в excel. Язык c#. В NuGet скачал Microsoft.Office.Interop.Excel.

Скачать с гитхаба *одну* директорию, без истории, в данный момент её истории

Нужно скачать с гитхаба копию (=снэпшот=без истории) некоторой директории (именно некоторой — не хочу скачивать другие, там могут быть большие объёмы картинок-звуков и пр.) в произвольный момент времени, например, директорию include после этого коммита. Изначально никаких данных репы локально нет.

(про svn export знаю, пользуюсь, но он скачивает лишь то что было помечено тагами — брэнчи, а у меня есть лишь некий id коммита, или дерева.).

Какими командами git это можно сделать?

Вообще да, искал. Вот например простыня советов. Но что-то не то совсем советуют, или я не понимаю.

Читайте также:  Если сломался барабан стиральной машины

Сохранение(перенос) настроек программы в другом каталоге.

По дефолту это $HOME/.config/какая_то_программа. Как узнать эту перменную окружения с которой запускается «какая_то_программа»? Чтоб она сохраняла настройки не в $HOME/.config/ .

Fedora НЕ запрещена в Крыму

Недавно обновились экспортные ограничения Fedora. Все почему-то очень возбудились на вот эту часть:

Fedora software and technical information may be subject to the U.S. Export Administration Regulations (the “EAR”) and other U.S. and foreign laws and may not be exported, re-exported or transferred (a) to a prohibited destination country under the EAR or U.S. sanctions regulations (currently Cuba, Iran, North Korea, Sudan, Syria, and the Crimea Region of Ukraine, subject to change as posted by the United States government)

Да, вроде как, тут написано, что EAR запрещает что-то там в Крым. Но внизу есть ма-а-а-аленькая приписка:

Fedora software in source code and binary code form are publicly available and are not subject to the EAR in accordance with §742.15(b).

То есть, никто не запрещает качать и пользоваться. А вот с «Technical information», что бы ни имелось в виду под этими словами, могут возникнуть проблемы. Может быть, запретят доступ на форум. Ну, или там коммьюнити разговаривать перестанет, я уж не знаю. Но трагедия не получилась, использующих в Крыму Fedora расстреливать и даже штрафовать никто не собирается. Такие дела.

Перемещено Shaman007 из russia

Переменный окружения в perl

Добрый день, подскажите почему не работает такой код

Подсчёт возраста в bash’е

здравствуйте,помогите создать переменная окружения,хранящая год вашего рождения.Выведите сообщение о вашем возрасте,используя:константу вашего возраста:константу текущего года и переменную года вашего рождения;текущий год из системной даты и переменную года вашего рождения.

export mylib из скрипта

при выполнении команды

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

export -f непередаетфункцию.

Дистрибутив: Linux version 4.7.1-1-ARCH

Не могу выполнить «export -f testf». Результат:

export: invalid option(s)

По мануалу опция «-f» есть:

-f — specify that arguments refer to functions

Вопрос: почему не могу экспортировать функцию?

Экспорт кучи текстовых файлов в Markdown + статический блог

Вот тут я давече создавал тему «Как перенести все свои шпаргалки из .txt файлов в облако с красивым оформлением»:

За много лет накопилось огромное количество (десятки тысяч) собственных заметок, шпаргалок, туториалов, которые составлял в обычных текстовых (*.txt) файлах, с минимальным форматированием. Хранится все это добро локально диске. Информация структурирована по каталогам, а имена файлов выполняют роль тегов, таким образом поиск нужной информации легко осуществляется через поиск файла, в имени которого содержится нужная информация. В редких случаях помогает поиск по содержимому файлов.

Долгое время такая схема устраивала. Но теперь назрела необходимость переложить это все в интернет (сделать подобие wiki), и отсюда вопросы:

1. Возможно ли сделать пакетную конвертацию огромного количества .txt файлов к хоть какой-то, пусть совсем минимальной, html-верстке, применяемой к технической (компьютерной) документации? Существуют ли специальные языки разметки и парсеры для этого?

2. Сейчас информация структурирована в удобном для поиска виде (каталоги, плюс имена файлов в качестве тегов, плюс поиск по содержанию). Возможно ли сделать так, чтобы перенос всего хозяйства в интернет был без ущерба для быстрого и простого поиска и с минимальными трудозатратами?

3. В данный момент составление заметок происходит путем создания или редактирования обычного текстового файла, то есть очень быстро и просто. Возможно ли сохранить эту простоту и легкость при составлении таких форматированных html-заметок в облаке?

P.S. Уточняю — требуется конвертация текстовых данных к html-разметке и публикация их в общем доступе, а не перенос данных в облачное хранилище (типа Яндекс.Диск, Google Drive, Dropbox)!

И, следуя вашим советам, взялся перелопачивать все свои заметки в Markdown-разметку с последующей их публикацией в статический блог на движке Octopress. Идея очень понравилась, но появилось одно очень неприятное «Но», которое сводит все труды на нет — дело в том, что в Octopress (как и в других аналогичных движках) все посты (точнее их исходники) складываются в один единственный каталог octopress/source/_posts/, и их имена имеют формат «год-мес-чис-тайтл.markdown».

  1. каталогизация всех моих заметок по тематическим каталогам идет прахом;
  2. легкий поиск нужного файла по его имени (имена заметок выполняли роль тегов) также идет прахом;
  3. и, самое главное — с этими заметками я постоянно работаю, внося в них изменения и дополнения, которые хотелось бы сразу и с минимальными усилиями обновлять и в блоге. С этим, к сожалению, тоже полный провал! :'(

С файлами в markdown-разметке работать одно удовольствие, но вот найти нужный файл в исходниках (когда таких файлов тысячи), геморойно, поскольку все они лежат в одной куче. Получается, что такое решение подходит для буквально статических блогов.

Основной вопрос, как в вышеупомянутом решении (git, markdown, octopress) осуществлять частый поиск и изменение файлов (постов), годится ли оно для этого?
Если нет, то посоветуйте альтернативное легковесное решение. (Всякие wiki-движки не предлагать)

В идеале требуется решение, которое бы не нарушало структуру текстовых (markdown) файлов, а переводило бы их в html и коммитило на хостинг. Ну то есть, создавало бы зеркало, преобразуя markdown в html.

В каком файле редактировать PATH. Debian jessie

Источник

Оцените статью