【问题标题】:How to specify the search directory for CLIPS files?如何指定 CLIPS 文件的搜索目录?
【发布时间】:2021-06-28 15:53:10
【问题描述】:

我想在我的系统中安装一些 CLIPS 文件,以便我可以从任何程序(例如,/usr/local/share/clips/foo.clp)加载它们。

但是,load 似乎只在当前目录中查找文件:

CLIPS> (load "/usr/local/share/clips/foo.clp")
TRUE
CLIPS> (load "foo.clp")
[ARGACCES2] Function load was unable to open file foo.clp.
FALSE

如何指定搜索路径以使(load "foo.clp") 按预期工作?是否有一个默认搜索目录,我可以在其中放置我的文件而无需明确设置搜索路径?

【问题讨论】:

    标签: clips


    【解决方案1】:

    在 CLIPS 6.4 中,您可以使用 chdir 命令更改当前目录,这样当启动 CLIPS 时文件不在当前目录中时,您不必指定完整路径。

    garyriley:R640$ ./clips
             CLIPS (6.4 2/9/21)
    CLIPS> (load "/usr/local/share/clips/foo.clp")
    *
    TRUE
    CLIPS> (clear)
    CLIPS> (load foo.clp)
    [ARGACCES3] Function 'load' was unable to open file 'foo.clp'.
    FALSE
    CLIPS> (chdir "/usr/local/share/clips")        
    TRUE
    CLIPS> (load foo.clp)
    *
    TRUE
    CLIPS>
    

    CLIPS 不会在 C 文件 I/O 库之上分层任何内容,因此搜索路径仅限于 fopen 函数用于其当前目录的任何内容。您可以修改 CLIPS 源代码以将当前目录设置为固定目录或从配置文件读取的目录,但如果您想从多个目录加载文件,您仍然需要指定完整路径或使用 chdir更改当前目录。

    【讨论】:

    • 好的,很高兴知道这一点。但我猜没有默认搜索路径?我想安装一个 CLIPS 文件,理想情况下允许用户加载文件而不需要他们更改目录。
    • CLIPS 不会在 C 文件 I/O 库之上分层任何内容,因此搜索路径仅限于 fopen 函数用于其当前目录的任何内容。您可以修改 CLIPS 源代码以将当前目录设置为固定目录或从配置文件读取的目录,但如果您想从多个目录加载文件,您仍然需要指定完整路径或使用 chdir更改当前目录。
    • 感谢您的解释!如果您可以将评论添加到您的答案中,我会接受它:)(这对我来说至关重要)
    猜你喜欢
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多