Command line 使用命令行args启动erlang有效,而使用args\u文件则无效

Command line 使用命令行args启动erlang有效,而使用args\u文件则无效,command-line,erlang,erl,Command Line,Erlang,Erl,我在erlang中安装了一个非常简单的小OTP应用程序,方法是在10分钟内使用erlang创建HTTP API: 当我用命令行args启动erl时,它工作得非常好,如视频中所示。但是,如果尝试使用-args_file参数启动erl,则应用程序不会启动 args_文件非常简单;它只有一行,如下所示: -pa deps/*/ebin ebin -s fancyapi_app …下面是我尝试运行erlang时得到的错误报告: =INFO REPORT==== 5-Mar-2013::19:32:59

我在erlang中安装了一个非常简单的小OTP应用程序,方法是在10分钟内使用erlang创建HTTP API:

当我用命令行args启动erl时,它工作得非常好,如视频中所示。但是,如果尝试使用-args_file参数启动erl,则应用程序不会启动

args_文件非常简单;它只有一行,如下所示:

-pa deps/*/ebin ebin -s fancyapi_app
…下面是我尝试运行erlang时得到的错误报告:

=INFO REPORT==== 5-Mar-2013::19:32:59 ===
application: fancyapi
exited: {shutdown,{fancyapi_app,start,[normal,[]]}}
type: temporary
有什么想法吗?args_文件名会导致比使用常规命令行args更多的情况发生吗?文件载于:

此外,我知道该命令在某种程度上是有效的,因为如果我向文本文件添加,比如说-sname节点,erl提示符就会显示node@localhost1>.

使用-emu_args标志,该标志将显示发送到仿真器的确切参数。下面是一个简单的示例:

$ cat test.args 
-emu_args
-pa deps/*/ebin
-pa ebin
-name test@localhost
现在,我将手动传递所有这些参数:

$ erl -emu_args -pa deps/*/ebin -pa ebin -name test@localhost
Executing: /Users/abhinavsingh/Builds/R15B03/lib/erlang/erts-5.9.3.1/bin/beam.smp /Users/abhinavsingh/Builds/R15B03/lib/erlang/erts-5.9.3.1/bin/beam.smp -- -root /Users/abhinavsingh/Builds/R15B03/lib/erlang -progname erl -- -home /Users/abhinavsingh -- -pa deps/cowboy/ebin deps/jsx/ebin deps/lager/ebin deps/mimetypes/ebin deps/ranch/ebin -pa ebin -name test@localhost

Erlang R15B03 (erts-5.9.3.1) [source] [smp:8:8] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.9.3.1  (abort with ^G)
(test@localhost)1> 
接下来通过args文件:

$ erl -args_file test.args 
Executing: /Users/abhinavsingh/Builds/R15B03/lib/erlang/erts-5.9.3.1/bin/beam.smp /Users/abhinavsingh/Builds/R15B03/lib/erlang/erts-5.9.3.1/bin/beam.smp -- -root /Users/abhinavsingh/Builds/R15B03/lib/erlang -progname erl -- -home /Users/abhinavsingh -- -pa deps/*/ebin -pa ebin -name test@localhost

Erlang R15B03 (erts-5.9.3.1) [source] [smp:8:8] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.9.3.1  (abort with ^G)
(test@localhost)1> 
正如你所看到的,两者其实并不相同。具体地说,在手动执行所有操作时-pa deps/*/ebin扩展为-pa deps/cowboy/ebin deps/jsx/ebin…,但当您通过args文件传递它时,情况就不一样了。因此,某些模块不在代码路径中,因此应用程序无法启动。

使用-emu_args标志,该标志将显示发送到仿真器的确切参数。下面是一个简单的示例:

$ cat test.args 
-emu_args
-pa deps/*/ebin
-pa ebin
-name test@localhost
现在,我将手动传递所有这些参数:

$ erl -emu_args -pa deps/*/ebin -pa ebin -name test@localhost
Executing: /Users/abhinavsingh/Builds/R15B03/lib/erlang/erts-5.9.3.1/bin/beam.smp /Users/abhinavsingh/Builds/R15B03/lib/erlang/erts-5.9.3.1/bin/beam.smp -- -root /Users/abhinavsingh/Builds/R15B03/lib/erlang -progname erl -- -home /Users/abhinavsingh -- -pa deps/cowboy/ebin deps/jsx/ebin deps/lager/ebin deps/mimetypes/ebin deps/ranch/ebin -pa ebin -name test@localhost

Erlang R15B03 (erts-5.9.3.1) [source] [smp:8:8] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.9.3.1  (abort with ^G)
(test@localhost)1> 
接下来通过args文件:

$ erl -args_file test.args 
Executing: /Users/abhinavsingh/Builds/R15B03/lib/erlang/erts-5.9.3.1/bin/beam.smp /Users/abhinavsingh/Builds/R15B03/lib/erlang/erts-5.9.3.1/bin/beam.smp -- -root /Users/abhinavsingh/Builds/R15B03/lib/erlang -progname erl -- -home /Users/abhinavsingh -- -pa deps/*/ebin -pa ebin -name test@localhost

Erlang R15B03 (erts-5.9.3.1) [source] [smp:8:8] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.9.3.1  (abort with ^G)
(test@localhost)1> 

正如你所看到的,两者其实并不相同。具体地说,在手动执行所有操作时-pa deps/*/ebin扩展为-pa deps/cowboy/ebin deps/jsx/ebin…,但当您通过args文件传递它时,情况就不一样了。因此,某些模块不在您的代码路径中,因此应用程序无法启动。

Wow,它不会解析*因为它不直接在命令行中。谢谢哇,它没有解析*因为它不直接在命令行中。谢谢