Войти

Показать полную графическую версию : Вопрос по командам set, env, declare, export


vkostromin
14-10-2007, 14:04
Не могу понять, чем объясняется разница в выводе команд set, env, export и declare (typeset). Вроде все они должны выводить перечень переменных среды (и функций), но вывод этих команд существенно отличается.
Может кто-нибудь толково объяснить, в чем их разница. В man-ах копался, но не понял.
В.Костромин

vkostromin
14-10-2007, 15:41
Вот небольшая табличка показывающая объем файла и число строк в нем для 4 команд, каждая из которых должна вроде как выдавать состав текущего окружения (все запускались в одном и том же консольном окне, то есть в одинаковых условиях):

declare 3803 байта 77 строк
set 3776 байта 77 строк
export 3558 байта 67 строк
env 2861 байта 45 строк

Сравнивал вывод построчно, понять в чем причина отличий не могу.
Можете повторить эксперимент

ruslandh
14-10-2007, 16:01
Может надо искать разницу исходя из основного предназначеия команды, а не действия по-умолчанию.
Соответственно их вывод ориентирован ддя перенаправления в ту или иную функцию.
set, export, declare - внутреннии функции shel
env - внешняя.

Например :
set [--abefhkmnptuvxBCHP] [-o опция] [аргумент ...]
При вызове без опций выдает имя и значение всех переменных командного интерпретатора в виде, пригодном для повторного выполнения присваиваний.



set - для установки значения
env - внешняя команда для запуска программы с заданными параметрами.
export - экспортирование значение переменной в среду bash
declare - задание переменной и массивов переменных

http://www.linux.org.ru/books/bash-conspect.html

http://ln.com.ua/~openxs/projects/man/uman047.html

и там-же :

http://ln.com.ua/~openxs/projects/man/uman076.html
http://ln.com.ua/~openxs/projects/man/uman077.html
http://ln.com.ua/~openxs/projects/man/uman078.html




© OSzone.net 2001-2012