使用 www_open_url/1
Using www_open_url/1
我知道 www_open_url/1
应该启动我的默认浏览器并转到网页。但是我的 ubuntu 电脑不这样做。如果我正常启动 prolog,我会收到错误 'Couldn't get a file descriptor refering to the console' 。如果我以 sudo 方式启动 swipl,它只是 returns true
但不会启动浏览器。我通常不想像 sudo 那样使用这个谓词。这是一个痕迹:
www_open_url('http://www.bbc.co.uk').
Call: (6) www_browser:www_open_url('http://www.bbc.co.uk') ? creep
Call: (7) current_prolog_flag(browser, _G397) ? creep
Fail: (7) current_prolog_flag(browser, _G397) ? creep
Redo: (6) www_browser:www_open_url('http://www.bbc.co.uk') ? creep
Call: (7) getenv('BROWSER', _G397) ? creep
Fail: (7) getenv('BROWSER', _G397) ? creep
Redo: (6) www_browser:www_open_url('http://www.bbc.co.uk') ? creep
Call: (7) www_browser:open_command(_G396) ? creep
Exit: (7) www_browser:open_command('gnome-open') ? creep
Call: (7) www_browser:has_command('gnome-open') ? creep
Call: (8) www_browser:command_cache('gnome-open', _G397) ? creep
Exit: (8) www_browser:command_cache('gnome-open', -) ? creep
Call: (8) (-)\== (-) ? creep
Fail: (8) (-)\== (-) ? creep
Fail: (7) www_browser:has_command('gnome-open') ? creep
Redo: (7) www_browser:open_command(_G396) ? creep
Exit: (7) www_browser:open_command(open) ? creep
Call: (7) www_browser:has_command(open) ? creep
Call: (8) www_browser:command_cache(open, _G397) ? creep
Exit: (8) www_browser:command_cache(open, '/bin/open') ? creep
Call: (8) '/bin/open'\== (-) ? creep
Exit: (8) '/bin/open'\== (-) ? creep
Exit: (7) www_browser:has_command(open) ? creep
Call: (7) www_browser:expand_url_path('http://www.bbc.co.uk', _G397) ? creep
Call: (8) atomic('http://www.bbc.co.uk') ? creep
Exit: (8) atomic('http://www.bbc.co.uk') ? creep
Exit: (7) www_browser:expand_url_path('http://www.bbc.co.uk', 'http://www.bbc.co.uk') ? creep
^ Call: (7) format(string(_G389), '~w "~w"', [open, 'http://www.bbc.co.uk']) ? creep
^ Exit: (7) format(string("open \"http://www.bbc.co.uk\""), '~w "~w"', [open, 'http://www.bbc.co.uk']) ? creep
Call: (7) shell("open \"http://www.bbc.co.uk\"") ? creep
Exit: (7) shell("open \"http://www.bbc.co.uk\"") ? creep
Exit: (6) www_browser:www_open_url('http://www.bbc.co.uk')
? creep
true.
如您所见,您的序言进行了三次往返并最终使用 open
这可能意味着 mac 用户的后备(这不是您想要的程序在这种情况下使用)。首先,它尝试从 prolog 环境中读取浏览器标志,然后尝试从 systen 环境中读取 BROWSER
变量。如果这两个都失败了,它会寻找一个名为 gnome-open
的程序。之后,它会寻找一个名为 open 的程序。以下是您可能会获得正确计划的一些方法:
尝试在您启动 prolog 的环境中设置 $BROWSER
变量。一种可能是这样启动您的 Prolog:
BROWSER=<your browser command> swipl
您也可以在 .*shrc
中设置它以供将来使用(可能是个好主意,因为 BROWSER
变量是其他程序所依赖的:
export BROWSER=<your browser command>
另一种方法是尝试为 prolog 设置浏览器:将其放在 ~/.plrc
中的某处以便为当前用户设置它,或者在您的 prolog 文件中的某处为当前应用程序设置它:
:- set_prolog_flag(browser, 'chrome').
如果这些没有帮助,请尝试安装 gnome-open
。
该错误可能也与 SWI-Prolog 版本有关。您是否尝试安装最新的开发版本 (7.1.37)?
我知道 www_open_url/1
应该启动我的默认浏览器并转到网页。但是我的 ubuntu 电脑不这样做。如果我正常启动 prolog,我会收到错误 'Couldn't get a file descriptor refering to the console' 。如果我以 sudo 方式启动 swipl,它只是 returns true
但不会启动浏览器。我通常不想像 sudo 那样使用这个谓词。这是一个痕迹:
www_open_url('http://www.bbc.co.uk').
Call: (6) www_browser:www_open_url('http://www.bbc.co.uk') ? creep
Call: (7) current_prolog_flag(browser, _G397) ? creep
Fail: (7) current_prolog_flag(browser, _G397) ? creep
Redo: (6) www_browser:www_open_url('http://www.bbc.co.uk') ? creep
Call: (7) getenv('BROWSER', _G397) ? creep
Fail: (7) getenv('BROWSER', _G397) ? creep
Redo: (6) www_browser:www_open_url('http://www.bbc.co.uk') ? creep
Call: (7) www_browser:open_command(_G396) ? creep
Exit: (7) www_browser:open_command('gnome-open') ? creep
Call: (7) www_browser:has_command('gnome-open') ? creep
Call: (8) www_browser:command_cache('gnome-open', _G397) ? creep
Exit: (8) www_browser:command_cache('gnome-open', -) ? creep
Call: (8) (-)\== (-) ? creep
Fail: (8) (-)\== (-) ? creep
Fail: (7) www_browser:has_command('gnome-open') ? creep
Redo: (7) www_browser:open_command(_G396) ? creep
Exit: (7) www_browser:open_command(open) ? creep
Call: (7) www_browser:has_command(open) ? creep
Call: (8) www_browser:command_cache(open, _G397) ? creep
Exit: (8) www_browser:command_cache(open, '/bin/open') ? creep
Call: (8) '/bin/open'\== (-) ? creep
Exit: (8) '/bin/open'\== (-) ? creep
Exit: (7) www_browser:has_command(open) ? creep
Call: (7) www_browser:expand_url_path('http://www.bbc.co.uk', _G397) ? creep
Call: (8) atomic('http://www.bbc.co.uk') ? creep
Exit: (8) atomic('http://www.bbc.co.uk') ? creep
Exit: (7) www_browser:expand_url_path('http://www.bbc.co.uk', 'http://www.bbc.co.uk') ? creep
^ Call: (7) format(string(_G389), '~w "~w"', [open, 'http://www.bbc.co.uk']) ? creep
^ Exit: (7) format(string("open \"http://www.bbc.co.uk\""), '~w "~w"', [open, 'http://www.bbc.co.uk']) ? creep
Call: (7) shell("open \"http://www.bbc.co.uk\"") ? creep
Exit: (7) shell("open \"http://www.bbc.co.uk\"") ? creep
Exit: (6) www_browser:www_open_url('http://www.bbc.co.uk')
? creep
true.
如您所见,您的序言进行了三次往返并最终使用 open
这可能意味着 mac 用户的后备(这不是您想要的程序在这种情况下使用)。首先,它尝试从 prolog 环境中读取浏览器标志,然后尝试从 systen 环境中读取 BROWSER
变量。如果这两个都失败了,它会寻找一个名为 gnome-open
的程序。之后,它会寻找一个名为 open 的程序。以下是您可能会获得正确计划的一些方法:
尝试在您启动 prolog 的环境中设置 $BROWSER
变量。一种可能是这样启动您的 Prolog:
BROWSER=<your browser command> swipl
您也可以在 .*shrc
中设置它以供将来使用(可能是个好主意,因为 BROWSER
变量是其他程序所依赖的:
export BROWSER=<your browser command>
另一种方法是尝试为 prolog 设置浏览器:将其放在 ~/.plrc
中的某处以便为当前用户设置它,或者在您的 prolog 文件中的某处为当前应用程序设置它:
:- set_prolog_flag(browser, 'chrome').
如果这些没有帮助,请尝试安装 gnome-open
。
该错误可能也与 SWI-Prolog 版本有关。您是否尝试安装最新的开发版本 (7.1.37)?