Em bash
, typeset
e declare
são exatamente iguais. A única diferença é que typeset
é considerado obsoleto.
typeset: typeset [-aAfFgilrtux] [-p] name[=value] ...
Set variable values and attributes.
Obsolete. See 'help declare'.
A página man ainda os lista na mesma respiração:
declare [-aAfFgilrtux] [-p] [name[=value] ...]
typeset [-aAfFgilrtux] [-p] [name[=value] ...]
Declare variables and/or give them attributes.
typeset
é portável para alguns outros shells, por exemplo, ksh93
. Se você estiver pensando em portabilidade entre os shell, use typeset
(e certifique-se de que a maneira como você está chamando seja portátil). Se você não se importa com essa portabilidade, use declare
.