如何使用 Bash 脚本通过 Firefox 打开不同配置文件中的 URL?

如何使用 Bash 脚本通过 Firefox 打开不同配置文件中的 URL?

编写脚本来自动执行 Firefox 中的某些任务。

这些任务应该通过干净的 Firefox 配置文件运行,因此它们速度很快并且不会干扰我的任何常规浏览。

#!/bin/bash

# Launch clean firefox profile with parameters:
# -no-remote    don't connect to any running instance of firefox
# -P        run firefox through a profile
firefox -P 'Another Profile' &
sleep 4 # wait for firefox to load

# Open URLs
firefox -new-tab 'http://askubuntu.com/users'
firefox -new-tab 'http://askubuntu.com/badges'

不幸的是,我无法在“另一个配置文件”中打开这些 URL。相反,Ubuntu 会使用我的默认用户配置文件启动 Firefox 并在那里打开它们。

关于如何在“其他个人资料”中打开它们有什么建议吗?

答案1

如果省略配置文件,firefox则会在打开的 Firefox 程序之一中打开 URL。您必须明确提及它:

firefox -P 'Another Profile' http://example.com/

您还可以一次打开多个 URL 并将其合并,无需睡眠:

firefox -P 'Another Profile' http://example.com/ http://example.net/

答案2

为了解决您提到的问题,我采取了一种方法,即使用简单的 javascript 重定向打开本地 html 文件。我在配置文件中打开 Firefox,并将该本地 html 页面作为 url。

下面是我在 html 文件中用于重定向到我的宏的代码示例。我相信还有更好的方法,但目前对我来说这个方法已经足够好了。哦,我还使用 close all others 标签来清除初始页面。

<script language="JavaScript">
function redirect() {
    window.location.href = 'http://run.imacros.net/?m=Macro_folder/sub_folder/macro.js';
}
setTimeout(function(){
    redirect();
},(5 * 1000));
</script>

答案3

基于Att Righ 的回答我开发了以下解决方案,可以根据 URL 自动选择正确的配置文件。

该包装脚本在 Ubuntu Linux 20.04.6 和 Mozilla Firefox 104.0 上进行了测试。

#!/bin/bash

if [[ "$@" =~ .*"google."|"facebook.com"|"instagram.com".* ]] 
then
    profile=for_evil_sites
else
    profile=default
fi  

if pgrep --full "firefox\b.*$profile" > /dev/null; then
    /usr/bin/firefox -P "$profile" "$@" > /dev/null
else
    /usr/bin/firefox --new-instance -P "$profile" "$@" > /dev/null
    disown $!
fi

使用名称firefoxeg in保存脚本$HOME/bin/,并确保将加载该脚本而不是标准 Firefox。(目录必须位于变量中的原始目录之前$PATH。)

相关内容