- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
根据 Apple's Developer Docs Library
全局允许导入已编译的脚本,以便它们可以用作当前脚本中的库。如果您要使用位于 ~/Library/Script Libraries
的 myLibName.scpt
执行类似以下代码的操作,这会很好地工作:
myLib = Library('myLibName');
myLib.myLibMethod() // Works just fine
但是,文档还声称可以导出一个环境变量 — OSA_LIBRARY_PATH
包含一串 :
分隔路径 — 和 Library()
将在 继续其默认路径之前遵循该路径列表:~/Library/Script Libraries
。你知道,就像 bash 环境变量 Path
。这是下面的相关文档;它描述了路径层次结构:
The basic requirement for a script to be a script library is its location: it must be a script document in a “Script Libraries” folder in one of the following folders. When searching for a library, the locations are searched in the order listed, and the first matching script is used:
- If the script that references the library is a bundle, the script’s bundle Resources directory. This means that scripts may be packaged and distributed with the libraries they use.
- If the application running the script is a bundle, the application’s bundle Resources directory. This means that script applications (“applets” and “droplets”) may be packaged and distributed with the libraries they use. It also enables applications that run scripts to provide libraries for use by those scripts.
- Any folders specified in the environment variable OSA_LIBRARY_PATH. This allows using a library without installing it in one of the usual locations. The value of this variable is a colon-separated list of paths, such as /opt/local/Script Libraries:/usr/local/Script Libraries. Unlike the other library locations, paths specified in OSA_LIBRARY_PATH are used exactly as-is, without appending “Script Libraries”. Supported in OS X v10.11 and later.
- The Library folder in the user’s home directory, ~/Library. This is the location to install libraries for use by a single user, and is the recommended location during library development.
- The computer Library folder, /Library. Libraries located here are available to all users of the computer.
- The network Library folder, /Network/Library. Libraries located here are available to multiple computers on a network.
- The system Library folder, /System/Library. These are libraries provided by OS X.
- Any installed application bundle, in the application’s bundle Library directory. This allows distributing libraries that are associated with an application, or creating applications that exist solely to distribute libraries. Supported in OS X v10.11 and later.
问题是它不起作用。我试过导出 OSA_LIBRARY_PATH
变量——通过我的 .zshrc
文件全局导出——然后通过脚本编辑器和 运行一个示例脚本,就像上面的脚本一样>osascript
可执行文件。什么都不管用;我收到“找不到文件”错误。我找到了这个 thread-where-the-participants-give-up-hope在线的;它并没有解释太多。有什么想法吗?
在某种程度上相关的注释中,Scripting Additions 套件提供了另外两种方法——loadScript
和 storeScript
——它们看起来可能很有用这里。不幸的是,当您尝试使用它们时,osascript
会给您带来麻烦。不过,我确实设法从使用 loadScript
的已编译脚本中返回了看起来像十六进制缓冲区的内容。不管怎样,如果你们能就此发表任何见解,我们将不胜感激。谢谢。
最佳答案
在启用系统完整性保护的情况下运行时,受限的可执行文件将忽略 OSA_LIBRARY_PATH
环境变量。
要解决此限制,您可以 turn off SIP ,或者您可以使用不受限制的可执行文件。
例如,要使 osascript
不受限制,您应该先制作一份副本,然后使用临时签名重新签名:
cp /usr/bin/osascript ./osascript
codesign -f -s - ./osascript
一旦您拥有不受限制的 osascript
,您就可以像这样设置 OSA_LIBRARY_PATH 环境变量来运行它:
OSA_LIBRARY_PATH="/path/to/libs" ./osascript path/to/script.scpt
关于objective-c - 为什么 OSA_LIBRARY_PATH 不能像为 JXA 记录的那样工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35389058/
我是 javascript 的新手(今天开始弄乱它)。 我正在尝试更改名为“bar”的元素(div)的高度。条形图将成为图表的一部分。 我可以毫无问题地将按钮连接到更改栏高度的函数。一切正常,除了条形
错误 -> “UIVIew”没有名为“addSubView”的成员 override func viewDidLoad() { super.viewDidLoad() // Do an
我在命令行工具项目中复制并粘贴了 main.swift 下面链接中的代码。 How do you use CGEventTapCreate in Swift? 它构建没有错误,但是当我运行时, gua
我在尝试编译我的代码时遇到以下错误。 ERROR! ..\myCode\CPOI.cpp:68:41: error: cannot dynamic_cast 'screenType' (of type
我正在尝试将多个字符串连接到一个我已为其分配内存的字符串指针。这是一个例子: char *finalNumString = malloc(sizeof(char)*1024); finalNumStr
我在使用 dup2() 和 pipe() 时遇到问题。 当我尝试将管道的写入端 dup2 到 STDOUT_FILENO 时,我收到了 EBADF。 我用 gdb 在 dup2(pout[1], ST
首先,我应该说我运行的是 Windows 7。 因此,今天早上我尝试像往常一样从我的存储库中提取数据,但我做不到。我得到了错误: The authenticity of host 'github.co
刚开始在虚拟环境中运行Python,乱用Django,无法激活虚拟环境。 花了最后 4 个小时尝试在本地终端/VS 代码上激活虚拟环境 (venv),但没有成功。 避免使用“sudo pip inst
Tidyverse 的粉丝经常给出使用小标题而不是数据框的几个优点。它们中的大多数似乎旨在保护用户免于犯错误。例如,与数据框不同,小标题: 不需要 ,drop=FALSE不从数据中删除维度的论据。 不
我一直在对 Elm 应用程序进行 docker 化时遇到问题。据我所知,我已经创建了一个完整且有效的 Docker 文件……但它不起作用。 我会解释的。 所以我的脚本在 3 个文件中运行。 首先是启动
我可以在 Controller 中使用@Autowired,例如 @RestController public class Index { @Autowired HttpServlet
我定义了一个方法和一个函数: def print(str:String) = println val intToString = (n:Int) => n.toString 现在我想创作它们。 我的问
当我控制台单独记录变量“pokemons”时,它确实返回一个数组。但是当我尝试映射它时,出现错误: TypeError: pokemons.map is not a function 我的代码: im
每当我尝试在 Python 解释器中导入 smtplib 时,都会收到此错误: ImportError: cannot import name fix_eols 我该如何解决这个问题? 编辑:这是完整
我正在使用 Meteor.js 开发一个项目,但在使用 Handlebar 时遇到了一些问题:我想检索集合的最后一项,并显示字段:其中包含 html 的文本: 这是我的javascript代码: Te
你好,我想使用 Service 实现 GestureDetector 但是我有这个错误The method onTouchEvent(MotionEvent) of type GestureServi
我正在尝试在 Controller bean 中 Autowiring 接口(interface) 在我放置的上下文配置文件中 和 我的 Controller 类是 @Controller pub
我试图在 mainwindow.cpp 中包含 QtSvg,但是当我编译时它说无法打开包含文件:QtSvg。我已经在我的 *.pro 文件中添加了这个(QT += svg)。我可以知道可能是什么问题吗
鉴于以下 PostgreSQL 代码,我认为这段代码不容易受到 SQL 注入(inject)攻击: _filter 'day' _start 1 _end 10 _sort 'article_name
我想执行以下操作。这在 MySQL 中是非法的。 PostGRESQL 中关联的 CTE(“with”子句)有效。这里的假设是 MySQL 中的子查询不是完全限定的 CTE。 请注意:这个查询显然非常
我是一名优秀的程序员,十分优秀!