-
- "declarado" significa que você usou
declare
outypeset
para especificar o tipo da variável. Isso permite que você especifique que a variável nomeia uma matriz, sempre deve ser tratada como um inteiro, deve ser somente leitura, etc. Isso não existe no shell POSIX, é uma extensãobash
. - Eu acho que "definido" e "conjunto" significam a mesma coisa: um valor foi dado à variável. A questão a que você ligou foi simplesmente inconsistente em suas palavras. A especificação do shell POSIX e o manual
bash
não usam a palavra "definido" quando se referem a variáveis, apenas diz:A parameter is set if it has an assigned value (null is a valid value).
- "declarado" significa que você usou
-
- "unset" é o oposto de "set" - a variável nunca foi atribuída (ou você já usou
unset
para remover a atribuição). Se você usar o comandoset
, a variável não será listada. - "null" significa que a variável recebeu uma string nula (comprimento zero) como o valor.
- "unset" é o oposto de "set" - a variável nunca foi atribuída (ou você já usou
-
Eu não acho que esses termos sejam relevantes para funções. Não existe uma função nula (você não pode deixar o corpo vazio ao definir uma função). E não há nada análogo a
${varname:-default}
para funções que precisam fazer algo especial se a função não estiver definida. Assim, o nome da função é definido e não há problema em chamá-lo ou não, e você receberá um erro se tentar chamá-lo.
Como as variáveis do shell contêm strings de comprimento arbitrário, nenhum armazenamento é alocado quando a variável é declarada. O armazenamento é alocado dinamicamente quando a variável é atribuída.