O que são comandos para encontrar palavras-chave shell, funções incorporadas e funções definidas pelo usuário?

4

Eu estava discutindo com meu amigo como os comandos são analisados no shell, e ele me disse que o bash pesquisa o comando na seguinte ordem

  1. Lista de aliases
  2. Lista de palavras-chave do shell
  3. Lista de funções definidas pelo usuário
  4. Lista de funções internas do shell
  5. Lista de diretórios especificados na variável PATH, da esquerda para a direita.

Eu sei que aliases podem ser encontrados emitindo o comando alias . O conteúdo da variável PATH pode ser encontrado usando o comando echo $PATH .

Você pode me dizer quais comandos eu preciso usar?

  1. Para listar todas as palavras-chave do shell
  2. Para listar todas as funções definidas pelo usuário
  3. Para lista de funções internas do shell
por Forever Learner 30.01.2013 / 12:33

4 respostas

3

No Bash:

  1. man bash | grep -10 RESERVED lista palavras reservadas:

    ! case do done elif else esac fi for function if in select then until while { } time [[ ]]
  2. declare -F e typeset -F mostram os nomes das funções sem o seu conteúdo.
  3. enable listas de shell comandos (eu não acho que estas são funções como tal). Assim faz man builtins
por 31.01.2013 / 10:46
3

Com zsh:

PATH= type -m '*'

Diria a todos vocês 3.

No bash, para listar as palavras-chave, você pode fazer:

complete -A keyword :

e digite : <Tab><Tab>

Para builtins, substitua keyword por builtin acima e, para as funções, deixarei você adivinhar.

    
por 30.01.2013 / 14:22
2

Você também pode usar compgen em bash :

  • compgen -k lista palavras-chave
  • compgen -b ou enable listas de builtins
  • compgen -A function ou declare -F lista funções
  • compgen -a ou alias aliases de listas
  • compgen -c lista comandos
  • compgen -v lista variáveis
  • compgen -e ou export lista variáveis exportadas
por 29.04.2014 / 11:20
1

A resposta para a segunda pergunta no caso de bash ou zsh : declare -f .

    
por 30.01.2013 / 13:17