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

Содержание
  1. Изучаем команды Linux: export
  2. 1. Введение
  3. 2. Часто используемые опции
  4. 3. Основы export
  5. 4. Дочерние и родительские процессы
  6. 5. Использование команды export
  7. 6. Экспорт функций командной оболочки
  8. 7. Удаление имен из списка экспорта
  9. 8. Заключение
  10. export -f непередаетфункцию.
  11. Не работает команда export из командного файла.
  12. Re: Не работает команда export из командного файла.
  13. Re: Не работает команда export из командного файла.
  14. Re: Не работает команда export из командного файла.
  15. Re: Не работает команда export из командного файла.
  16. Re: Не работает команда export из командного файла.
  17. Re: Не работает команда export из командного файла.
  18. unixforum.org
  19. решено: команда export
  20. решено: команда export
  21. Re: решено: команда export
  22. Re: решено: команда export
  23. Re: решено: команда export
  24. Re: решено: команда export
  25. unixforum.org
  26. Не работает export PATH
  27. Не работает export PATH
  28. Re: Не работает export PATH
  29. Re: Не работает export PATH
  30. Re: Не работает export PATH
  31. Re: Не работает export PATH

Изучаем команды Linux: export

1. Введение

Export — это одна из встроенных команд оболочки bash, поэтому она является неотъемлемой частью вашей командной строки. Она очень проста в использовании, так как синтаксис export допускает использование всего трех опций командной строки. В целом команда export отмечает переменную окружения для экспорта с любым новым дочерним процессом, и это позволяет дочернему процессу наследовать все отмеченные переменные. В данной статье этот процесс будет описан более подробно.

2. Часто используемые опции

-p
выводит список всех имен, экспортированных в текущей оболочке
-n
удаляет имена из списка экспорта
-f
имена экспортируются как функции

3. Основы export

Подумайте над следующим примером:

Строка 1: создается новая переменная с именем «a», содержащая строку «linuxcareer.com».
Строка 2: мы используем команду echo, чтобы вывести содержимое переменной «a».
Строка 3: мы создаем дочерний экземпляр оболочки bash.
Строка 4: переменная «a» теперь не определена.

Из приведенного выше примера можно видеть, что любой дочерний процесс, ответвляющийся от родительского процесса, по умолчанию не наследует переменные родителя. Для этого и нужна команда export. Что произойдет, если мы используем команду export в вышеприведенном примере?

Теперь в строке 3 мы использовали команду export, чтобы экспортировать переменную «a» в созданный новый дочерний процесс. В результате переменная «a» все еще содержит строку «linuxcareer.com», даже после создания нового экземпляра оболочки bash. Здесь важно отметить, что для успешного экспорта «a» необходимо, чтобы процесс, в который экспортируется переменная, ответвлялся от того родительского процесса, из которого экспортируется эта переменная. Связь между дочерним и родительским процессами описана ниже.

4. Дочерние и родительские процессы

В этом разделе мы коротко опишем взимосвязь между дочерним и родительским процессом. Все процессы могут быть родительскими и дочерними одновременно. Единственным исключением является процесс init, который всегда имеет PID (ID процесса) 1. Поэтому init является родительским для всех процессов, запущенных в системе Linux.

Читайте также:  Как ускорить запуск линукс

Любой создаваемый процесс имеет родительский процесс, из которого он создается, и может быть определен как потомок этого родительского процесса. Например:

Строка 1: вывести PID текущей командной оболочки — 27861
Строка 2: создать новый дочерний процесс из процесса с ID 27861
Строка 3: вывести PID текущей командной оболочки — 28034
Строка 4: вывести список дочерних процессов для PID 27861 с помощью команды ps

При создании нового дочернего процесса команда export просто обеспечивает, что все экспортируемые переменные родительского процесса доступны в дочернем процессе.

5. Использование команды export

Теперь, изучив основы, мы можем продолжить детальное исследование команды export. При использовании команды безо всяких опций и аргументов она просто выводит имена всех переменных, отмеченных для экспорта в дочерние процессы. То же самое происходит при использовании опции -p:

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

Как вы можете видеть, после экспорта переменной MYVAR, она будет показываться в списке экспортируемых переменных (строка 4). Приведенный выше пример можно сократить, используя команду export сразу при присваивании значения переменной.

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

В этом примере мы включаем дополнительный путь /usr/local/bin в существующее определение PATH.

6. Экспорт функций командной оболочки

Используя опцию -f, команда export может быть также использована для экспорта функций. В примере ниже мы создаем функцию оболочки под именем printname, которая просто выводит строку «Linuxcareer.com» с помощью команды echo.

7. Удаление имен из списка экспорта

Выполнив один из вышеприведенных примеров, мы имеет переменную MYVAR, определенную в списке экспорта.

Чтобы удалить переменную из списка экспорта, необходимо использовать опцию -n.

8. Заключение

В этой статье рассмотрены основы использования команды 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

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

где это? я не нашёл

У тебя походу zsh вместо bash’а. А у него нет -f в параметрах.

-без опции «-f» не кспортирует функцию, только переменные

bash: testf: команда не найдена

-A — specify that arguments refer to associative arrays

-E — floating point, use engineering notation on output

-F — floating point, use fixed point decimal on output

-H — hide value of parameter in listings

-L — left justify and remove leading blanks from value

-R — right justify and fill with leading blanks

-T — tie scalar to array or trace function

-U — keep array values unique and suppress alias expansion for functions

-Z — right justify and fill with leading zeros

-a — specify that arguments refer to arrays

Читайте также:  Itunes для linux ubuntu

-f — specify that arguments refer to functions

-h — hide specialness of parameter

-i — represent internally as an integer

-l — convert the value to lowercase

-m — treat arguments as patterns

-p — output parameters in form of calls to typeset

-r — mark parameters as readonly

-t — tag parameters and turn on execution tracing for functions

-u — convert the value to uppercase or mark function for autoloading

Источник

Не работает команда 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 переходят в текущее окружение.

Источник

unixforum.org

Форум для пользователей UNIX-подобных систем

  • Темы без ответов
  • Активные темы
  • Поиск
  • Статус форума

решено: команда export

Модератор: arachnid

решено: команда export

Сообщение diablo » 13.08.2008 16:13

Re: решено: команда export

Сообщение nesk » 13.08.2008 16:15

Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

Re: решено: команда export

Сообщение diablo » 13.08.2008 16:21

Re: решено: команда export

Сообщение nesk » 13.08.2008 16:26

Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

Читайте также:  Kyocera fs 1025mfp twain driver windows 10

Re: решено: команда export

Сообщение diablo » 13.08.2008 16:31

да, это я в мане прочел и не могу понять что происходит. сделал следующее.

cdo# /bin/sh
# export
.
.
показывает список переменных
.

а почему не работает сразу, когда я захожу под рутом.

Источник

unixforum.org

Форум для пользователей UNIX-подобных систем

  • Темы без ответов
  • Активные темы
  • Поиск
  • Статус форума

Не работает export PATH

Модератор: Bizdelnick

Не работает export PATH

Сообщение mypocta » 26.03.2007 20:09

У меня asplinux 11.2.

Привет всем. Помогите plz решить проблему.

Проблема:
Приложения под java пишут java: command not found
(не видят java)

Как решал:
установил jdk1.5.0_11.
Методом тыка понял что установилось в /usr/java/jdk1.5.0_11.

Далее в Path прописываю путь к java:

По умолчанию PATH:
echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

Изменяю PATH:
PATH=usr/java/jdk1.5.0_11/bin:/$PATH

echo $PATH
/usr/java/jdk1.5.0_11/bin://usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

Далее если запускать приложения из-под коммандной строки, например, то всё работает

Думаю, всё ОК, чтоб не вводить каждый раз, делаю
export PATH.

Перезагружаю комп export PATH как буд-то и небыло:
echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

Т.е export Path не сработал.

Вопрос: где хранится PATH (в каком файле)?

Из-за чего может быть такая трабла?

Re: Не работает export PATH

Сообщение Sceptik » 26.03.2007 20:18

Re: Не работает export PATH

Сообщение elide » 26.03.2007 20:22

Re: Не работает export PATH

Re: Не работает export PATH

Сообщение mypocta » 27.03.2007 02:41

/.bashrc
bash: /root/.profile: Нет такого файла или каталога
bash: /root/.bashrc: Отказано в доступе

Может у меня не сохраняется, т.к. «Отказано в доступе»?

Попробовал. Нажал enter, а текст листается и листается. Положил бутылку кока-колы на клавишу enter, попил чай, пришёл, текст всё листается. Правда, через 10 сек. подошёл к концу. Итого, это минут на 7 непрерывного листания и страниц на 150 убористого английского текста.

Яж помощи прошу, и не вразделе профи. Знаю, что это есть и в google, и в yandex и в man-ах и ещё много где. Понятно, что если их перечитаю, найду этот вопрос. Но это будет долго. Для того форумы и нужны: я, например хорошо понимаю в базах данных. И помогаю быстро решить вопросы на SQL.ru. Кто-то шарит в Linux, поэтому прошу их помощи здесь.

Имхо, смысла тогда категории «Вопрос чайника» теряется. Даже я, ЧАЙНИК, могу сказать ПРОФИ: ищи в man-ах, ищи в google, ищи в wikipedia.org, ищи citforum.ru, ищи linuxforum.ru и.т.д. И самое интересное, БУДУ ПРАВ в 99% случаях.
Но смысл от того, что я это скажу? Профи от этого больше знать не будет!
Понятно, что никому никто ничего не обязан, но всё же ИМХО если знаешь как сделать, то скажи, ну, или хотяб вырезку дай из MAN-a. Но так отсылать на весь bash, по маленькому конкретному вопросу — мне кажется неправельно.

Извините, наболело просто. Не подумайте, что кого-то к чему-то принуждаю, просто моё мнение.

Источник

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