Вибачте за відповідь на 3 роки, я зацікавився цією темою саме зараз і знайшов це питання.
Я ніде не знайшов документально підтвердженого рішення, тому я перевірив вихідний код, і ось дуже важлива частина:
http://dxr.mozilla.org/mozilla-central/source/toolkit/xre/nsAppRunner.cpp#1537
Тут, на жаль, nullptr в кінці рядка, на жаль, означає, що аргумент профілю не передається функції SendCommandLine, тому неможливо вибрати правильне вікно Firefox, на яке відправити повідомлення openurl.
Однак ми бачимо, що ім'я користувача передається і що ім'я користувача ініціалізується зі змінної середовища LOGNAME. Виходячи з цього, я придумав таке рішення:
- Я обертаю firefox за допомогою цього сценарію, який називається firefox.sh:
FOX_PROFILE = facebook
експортувати LOGNAME = помилка. $ FOX_PROFILE
/ opt / firefox / firefox -profile ~ / .mozilla_profiles / $ FOX_PROFILES "$ @"
при першому запуску він запускає новий екземпляр і каталог ~ / .mozilla_profiles / facebook повинен існувати,
коли запустили другий раз, якщо профіль у фейсбуці вже працює, він правильно підключається до нього,
він може правильно відправляти команди на кілька різних запущених профілів (звичайно, ви повинні змінити параметр FOX_PROFILE в першому рядку в різних сценаріях).
Я протестував це з Firefox 26 на Linux, і він працює.
Крім того, ось моє повноцінне рішення, яке ви можете хотіти або не хочете використовувати:
#! / бін / баш
встановити -е
FOX = / opt / firefox / firefox
ПОВІДОМЛЕННЯ = $ @
якщо [-z "$ FOX_PROFILE"]; тоді
if [-z "$ {MESSAGE}"]; тоді
FOX_PROFILE = за замовчуванням
ще
FOX_PROFILE = $ (kdialog - дефолт за замовчуванням --меню "- $ {MESSAGE} -" за замовчуванням google google facebook facebook facebook сповістити про спам спам)
фі
фі
експортувати FOX_PROFILE
# Цей злом необхідний, оскільки віддалений командний рядок Firefox надсилається
# ігнорує параметр профілю. Дивіться nsAppRunner.cpp: 1505.
експортувати LOGNAME = помилка. $ FOX_PROFILE
# Використання фонового виконання замість exec, тому поведінка така
# послідовно, коли профіль вже запущений і коли це просто
# запуск.
$ FOX -профіль ~ / .mozilla_profiles / $ FOX_PROFILE "$ @"
# Величезний успіх.
вихід 0
Якщо ви запускаєте скрипт без жодного параметра, він автоматично вибирає профіль за замовчуванням, але ви можете його замінити, встановивши FOX_PROFILE вручну в оболонці. Якщо URL-адреса передається в командному рядку, вона завжди запитує профіль, в якому її відкрити, це тому, що я в основному натискаю через свою програму чату та електронної пошти, і в такому випадку я хочу завжди вибирати профіль (google для календаря спам, фейсбук для спаму на день народження тощо). Звичайно, ви можете змінити логіку відповідно до вашого стилю використання, це лише приклад, важливим знанням є трюк LOGNAME.
І звичайно, ви повинні переконатися, що цей скрипт обгортки - єдиний спосіб запустити браузер на вашій машині. Тому що якщо ви відкриєте профіль без правильного набору LOGNAME, ви більше не зможете спілкуватися з цим профілем. Я поставив цей скрипт як перший на своєму шляху через декілька посилань, пов'язаних між собою, наприклад, x-www-браузер, firefox, sensible-браузер, і також ставлю його до змінної середовища BROWSER. Як саме це зробити, залежить від вашого GNU / Linux дистрибутива.