Не могу понять, чем объясняется разница в выводе команд set, env, export и declare (typeset). Вроде все они должны выводить перечень переменных среды (и функций), но вывод этих команд существенно отличается.
Может кто-нибудь толково объяснить, в чем их разница. В man-ах копался, но не понял.
В.Костромин
Redhat/Fedora - Вопрос по командам set, env, declare, export
-
vkostromin
Re: Redhat/Fedora - Вопрос по командам set, env, declare, export
Вот небольшая табличка показывающая объем файла и число строк в нем для 4 команд, каждая из которых должна вроде как выдавать состав текущего окружения (все запускались в одном и том же консольном окне, то есть в одинаковых условиях):
declare 3803 байта 77 строк
set 3776 байта 77 строк
export 3558 байта 67 строк
env 2861 байта 45 строк
Сравнивал вывод построчно, понять в чем причина отличий не могу.
Можете повторить эксперимент
declare 3803 байта 77 строк
set 3776 байта 77 строк
export 3558 байта 67 строк
env 2861 байта 45 строк
Сравнивал вывод построчно, понять в чем причина отличий не могу.
Можете повторить эксперимент
-
ruslandh
Re: Redhat/Fedora - Вопрос по командам set, env, declare, export
Может надо искать разницу исходя из основного предназначеия команды, а не действия по-умолчанию.
Соответственно их вывод ориентирован ддя перенаправления в ту или иную функцию.
set, export, declare - внутреннии функции shel
env - внешняя.
Например :
set [--abefhkmnptuvxBCHP] [-o опция] [аргумент ...]
При вызове без опций выдает имя и значение всех переменных командного интерпретатора в виде, пригодном для повторного выполнения присваиваний.
set - для установки значения
env - внешняя команда для запуска программы с заданными параметрами.
export - экспортирование значение переменной в среду bash
declare - задание переменной и массивов переменных
и там-же :
Соответственно их вывод ориентирован ддя перенаправления в ту или иную функцию.
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