use*_*284 5 firefox scripts protocol
我想要做的是能够从本地网站中的链接启动外部程序。
我通过在 about:config 中设置以下变量,在 firefox 中定义了一个自定义协议处理程序
network.protocol-handler.external.myprotocol;true
network.protocol-handler.warn-external.myprotocol;true
Run Code Online (Sandbox Code Playgroud)
当我单击表单中的链接时,这成功地导致 firefox 打开一个“启动应用程序”对话框myprotocol:///path_to_program_I_want_to_run
,然后我浏览到我想要使用的 shell 脚本并告诉 firefox 运行它。不幸的是,脚本似乎根本没有运行。
我已将文件权限设置为 777,因此 Firefox 运行它应该不会有任何问题
shell 脚本最初只包含这一行
$1
Run Code Online (Sandbox Code Playgroud)
这个想法是链接的路径将作为第一个参数传入并立即作为程序运行。当我使用类似的命令自己运行脚本时,这很好用
#./run_program.sh gedit
Run Code Online (Sandbox Code Playgroud)
或者
#./run_program.sh /home/ciaran/test_program
Run Code Online (Sandbox Code Playgroud)
现在用于测试目的的脚本仅包含该行
echo "testing" > /testing/file.txt
Run Code Online (Sandbox Code Playgroud)
其中“testing”是一个具有 777 权限的目录。另请注意,它/testing/
实际上位于我的文件系统的根目录(尽管我不记得我为什么把它放在那里!),所以我没有混淆相对路径和绝对路径
同样,当我从终端运行它时,它运行得非常好,并且file.txt
是在正确的位置创建的。但是,使用 Firefox,我可以选择要运行的应用程序,我选择了该 shell 脚本,但它似乎没有做任何事情。
file.txt
根本没有创建,尽管我看不到权限问题。所以 firefox 似乎没有运行脚本。
我也尝试将我的更改about:config
为包含
network.protocol-handler.expose.camara;true
Run Code Online (Sandbox Code Playgroud)
和
network.protocol-handler.app.camara;path/to/shell/script
Run Code Online (Sandbox Code Playgroud)
没有成功
发现问题了
我没有放在#!/bin/bash
文件的顶部。我基本上将 shell 脚本视为二进制可执行文件或其他东西,而不是解释为脚本,因为我不需要该行直接在终端中运行它。我忘记了要从另一个程序运行它必须运行它bash
因此,一旦该行位于脚本顶部,您就可以选择 Firefox 中的 shell 脚本作为运行自定义链接的程序,并且该链接将作为第一个参数成功传递到脚本中。
归档时间: |
|
查看次数: |
9343 次 |
最近记录: |