Tout en essayant la solution avec .erlang je suis tombé sur une solution pour la rr spécifique/1 utilisation:
De l'homme-page de shell:
Il y a un certain soutien pour la lecture et l'impression enregistrements dans le shell. Lors de la compilation, les expressions d'enregistrement sont traduites en expressions de type tuple- . En exécution, on ne sait pas si un tuple représente réellement un enregistrement . Les définitions d'enregistrements utilisées par le compilateur ne sont pas non plus disponibles au runtime. Donc, afin de lire la syntaxe d'enregistrement et imprimer des tuples comme enregistrements lorsque cela est possible, les définitions d'enregistrement doivent être maintenues par le shell lui-même. Les commandes shell pour la lecture, la définition, l'oubli, la liste et les enregistrements d'impression sont décrits ci-dessous. Notez que chaque travail possède son propre jeu de définitions d'enregistrements. Pour faciliter les choses enregistrer définitions dans les modules shell_default et user_default (si chargé) sont lus chaque fois qu'un nouveau travail est démarré. Par exemple, en ajoutant la ligne
-include_lib("kernel/include/file.hrl").
à user_default fait la définition de file_info facilement disponible dans la coquille.
Pour plus de précisions, j'ajouter quelques exemples:
fichier foo.hrl
:
-record(foo, {bar, baz=5}).
fichier: user_default.erl
:
-module(user_default).
-compile(export_all).
-include("foo.hrl"). % include all relevant record definition headers here
%% more stuff probably ...
permet d'essayer dans la coquille:
$ erl
Erlang R13B04 (erts-5.7.5) [source] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]
Eshell V5.7.5 (abort with ^G)
1> #foo{}.
#foo{bar = undefined,baz = 5}
→ par le shell le dossier de foo.hrl
Pour l'exemple de rr(), j'ai du mal à faire ce travail. Pour un si je mets seulement la ligne comme indiqué ci-dessus en .erlang il ne trouve pas rr/1 et je ne sais pas dans quel module rr/1 est défini. D'un autre côté je ne suis pas sûr que ce sera disponible dans tous les emplois shell. –
@Peer Stritzinger: 'rr()' n'est pas défini comme une fonction; vous pouvez le trouver dans 'stdlib/shell.erl' comme une clause de la fonction' local_func/7'. – Zed
@Zed: oui c'était mon problème et je cherchais un moyen de l'appeler automatiquement de toute façon. Financer la solution de contournement dans ma réponse personnelle et comme je ne peux pas penser à aucune des pseudo-fonctions intégrées de shell nécessaires au démarrage, le problème est résolu pour moi par la solution de contournement. –