【问题标题】:maple: how to include my library at startupmaple:如何在启动时包含我的库
【发布时间】:2013-10-09 20:44:33
【问题描述】:

目前我从命令行使用数学软件“Maple”,基本上是作为一个强大的计算器。 我编写了一个简单的 maple “库”,其中包含我的辅助函数。我想在 maple 启动时加载它。 (此任务几乎等同于在 shell 启动时加载 .bashrc 或 .bash_profile 文件)。

如何在 Maple 中做到这一点?它比预期的要复杂,而且文档记录不充分。

我现在拥有的是在我的主目录的 Maple 目录中编译的 Maple 库。

在枫壳/REPL 上,我这样做是为了加载这个文件(然后是标准库):

libname := "/home/knut/.maple/12/mylibs", "/opt/maple12/lib";
with(knb_ee);

[argumentd, hz2rad, listPhasors, phase, phased, phasorTheta, phasorThetaSum, polard, proc1, proc2, rad2hz]

我希望在 maple 启动时执行上面的两个命令。这该怎么做? 我的主目录中有一个 .maple/12/ 目录,在那里我找到了一个文件“maplerc”(这不是一个点文件)。这是要走的路吗?

更新: 供应商 Maplesoft 的这个描述对我来说似乎是一种误导,因为没有下面提到的这样的目录:

UNIX 和 Linux

在 UNIX 和 Linux 下,个人初始化文件被称为 .mapleinit,全局初始化文件称为init。这 初始化文件中的命令将由所有用户执行 通过将文件放在 Maple lib 目录中的网络,对于 例如,$MAPLE/lib/init。

要执行用户的个人命令集,初始化文件 在 UNIX 下应该放在用户的主目录中,例如, $HOME/.mapleinit.

Maple 在执行之前读取并执行网络初始化文件 个人初始化文件。

http://www.maplesoft.com/support/help/Maple/view.aspx?path=worksheet/reference/initialization

【问题讨论】:

    标签: shell math customization read-eval-print-loop maple


    【解决方案1】:

    尝试将/home/knut/.mapleinit 创建为一个新文件,其中包含您要执行的命令。

    您应该已经有一个 Linux 用户帐户的主目录。您应该能够使用以下命令将目录更改为该位置,

    cd ~
    

    或者,

    cd $HOME
    

    最后一个使用环境变量HOME,您也可以通过发出命令echo $HOME 来检查它的赋值。从您的帖子看来,您的主目录是/home/knut

    无论如何,最简单的方法是在你的主目录中创建一个新文件.mapleinit,并将你希望在启动时自动执行的 Maple 命令放入该纯文本文件中。

    这就是文档将其称为$HOME/.mapleinit 的原因,因为该文件通常会放在您的主目录中。该文件将不存在,直到您手动创建它。这是正常的(对于 Maple)。

    即使存在~/.mapleinit 这样的初始化文件,您仍然可以通过将-s 选项传递给maple 脚本来启动它而不使用它。

    或者您可以使用-i 选项将您选择的任何其他文件作为初始化文件。例如,

    maple -i somedirectory/somefile
    

    另一种方法(如果您必须转义引号则稍微棘手)是在调用maple 脚本时使用-c 选项的多个实例之一。这是您在启动时发出几个不同命令的另一种方式。事实上,有很多方法可以实现您的目标。

    【讨论】:

    • 感谢您的详细解释,但为什么会有 .maple/12/ 目录和 ~/.maple/12/maplerc 文件?里面有什么? Maple的GUI版本的设置?该文件是否由用户编辑?是否应该为存储在此 ~/.maple/12/ 目录或 ~/.maple 或其他地方的库的代码? (这几乎是第二个独立问题。)
    • ~/.maple/ 下的目录不适合用户使用。它们是 Maple 存储偏好的地方,仅此而已。您应该将库文件放在其他地方。不在您的 Maple 安装目录下。将个人库文件放在您自己的正常、非隐藏目录中,并使用libname 指定它。这很正常。 PS, libname:="/home/knut/someplace",libname 作为一次性命令更有用,因为它独立于您的 Maple 安装细节。
    • 谢谢。我试图从 libname 分配中省略“/opt/..”路径,但随后 maple 无法正常启动,或者发生了其他一些奇怪的行为。 ---- 此外,网络上关于使用 .mapleinit(或 maple.ini)进行枫木定制的最佳实践以及人们在 .mapleinit 文件中放入的内容的讨论仍然令人惊讶地少。这是唯一一个出现在快速不言自明的谷歌搜索中:mapleprimes.com/questions/41590-Examples-Of-Mapleini-Files(并且它不包含任何有用的建议)
    • 哦...你,@acer,也为 mapleprimes.com 上的论坛帖子做出了贡献(从 2007 年开始)。没关系。这种贡献确实有用。我想我会在这里再问一个关于模块开发的问题(mymod.m 文件和 .lib 文件,savelib() 调用等),当我再次尝试时。
    • 我没有引用我之前评论的建议,如果不清楚,请见谅。它原本是libname:="/home/knut/someplace",libname;,因此它将您的自定义库位置添加到libname 的当前值之前。这样就不必硬编码 Maple 安装位置。
    猜你喜欢
    • 2012-08-19
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    • 1970-01-01
    相关资源
    最近更新 更多