3 년 후반의 답변으로 죄송합니다. 지금이 주제에 관심을 갖게되어이 질문을 찾았습니다.
문서화 된 솔루션을 찾지 못했습니다. 소스 코드를 확인했으며 여기에 매우 관련이 있습니다 :
http://dxr.mozilla.org/mozilla-central/source/toolkit/xre/nsAppRunner.cpp#1537
여기서 줄 끝의 nullptr은 불행히도 프로필 인수가 SendCommandLine 함수에 전달되지 않음을 의미하므로 openurl 메시지를 보낼 올바른 firefox 창을 선택할 수 없습니다.
그러나 사용자 이름이 전달되고 있으며 사용자 이름이 LOGNAME 환경 변수에서 비롯된 것입니다. 이를 바탕으로 다음과 같은 해결책을 찾았습니다.
- firefox.sh라는이 스크립트로 파이어 폭스를 포장합니다.
FOX_PROFILE = 페이스 북
LOGNAME = errge. $ FOX_PROFILE 내보내기
/ opt / firefox / firefox -profile ~ / .mozilla_profiles / $ FOX_PROFILES "$ @"
처음 실행될 때 새 인스턴스를 시작하고 ~ / .mozilla_profiles / facebook 디렉토리가 존재해야합니다.
페이스 북 프로필이 이미 실행중인 경우 두 번째로 실행될 때 올바르게 연결됩니다.
여러 실행중인 프로파일로 명령을 올바르게 보낼 수 있습니다 (물론 다른 스크립트의 첫 번째 행에서 FOX_PROFILE 매개 변수를 변경해야합니다).
Linux에서 Firefox 26으로 이것을 테스트했으며 작동합니다.
또는 다음은 귀하가 원하거나 사용하지 않을 수있는 본격적인 솔루션입니다.
#! / bin / bash
세트 -e
FOX = / opt / firefox / firefox
메시지 = $ @
[-z "$ FOX_PROFILE"] 인 경우; 그때
[-z "$ {MESSAGE}"] 인 경우; 그때
FOX_PROFILE = 기본
그밖에
FOX_PROFILE = $ (kdialog --default default --menu "-$ {MESSAGE}-"기본 기본 Google Google 페이스 북 페이스 북 오류 이메일 오류 스팸)
fi
fi
FOX_PROFILE 내보내기
#이 핵은 파이어 폭스 원격 명령 행 전송 때문에 필요합니다
#은 프로필 매개 변수를 무시합니다. nsAppRunner.cpp : 1505를 참조하십시오.
LOGNAME = errge. $ FOX_PROFILE 내보내기
# exec 대신 백그라운드 실행을 사용하므로 동작은
# 프로필이 이미 실행 중일 때와 일관성이있을 때 일관성
# 시작.
$ FOX -profile ~ / .mozilla_profiles / $ FOX_PROFILE "$ @"
# 큰 성공.
출구 0
매개 변수없이 스크립트를 실행하면 기본 프로필이 자동 선택되지만 셸에서 FOX_PROFILE을 수동으로 설정하여 재정의 할 수 있습니다. 명령 행에 URL이 전달되면 항상 URL을 열 프로파일을 요청합니다. 주로 채팅 및 이메일 프로그램에서 클릭하여 클릭하기 때문에 항상 프로파일 (달력 용 Google)을 선택하고 싶기 때문입니다. 스팸, 생일 스팸 용 페이스 북 등). 물론 사용 스타일에 맞게 로직을 변경할 수 있습니다. 이것은 단지 예일뿐입니다. 중요한 지식은 LOGNAME 트릭입니다.
물론이 래퍼 스크립트가 컴퓨터에서 브라우저를 시작하는 유일한 방법인지 확인해야합니다. 올바른 LOGNAME을 설정하지 않고 프로필을 열면 더 이상 해당 프로필과 통신 할 수 없습니다. x-www-browser, firefox, sensible-browser와 같은 여러 심볼릭 이름을 통해이 스크립트를 경로에 가장 먼저 넣고 BROWSER 환경 변수에도 넣었습니다. 이 작업을 수행하는 방법은 GNU / Linux 배포판에 따라 다릅니다.