Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm trying to get the profile directory of the default firefox profile (the one that opens automatically) from Bash. How could I proceed? I can't find any useful options issuing firefox --help

share|improve this question
    
you can du a firefox; sudo lsof | grep [username] | grep firefox | grep profile which would get a firefox instance running. lsof will show you the opened files; grep will filter you out the interesting parts of lsof. This will quickstart the info + needs some fine-tuning. What do you need the information for anyhow? Do you wanna put some stuff automatically in a firefox profile folder - why? – humanityANDpeace Jan 10 '13 at 13:22
    
I want to get the firefox decmod.db file, because it is needed for a Java web application. For some reason, it works out of the box on Windows, but a configuration file with the path to the decmod.db file should be placed at home on Linux. I want to generate this file automatically. – Jorge Suárez de Lis Jan 10 '13 at 16:17
    
Sorry, can't edit my previous comment. Your proposal "works", but I want to place this on a session start script (for several reasons, it's the only place that makes sense) and I don't want to run firefox on each session start. – Jorge Suárez de Lis Jan 10 '13 at 16:26
up vote 3 down vote accepted

Try cat ~/.mozilla/firefox/profiles.ini | grep Path | sed s/^Path=//. Default profile folder name is stored in profiles.ini. This will work fine while you've got single profile.
If you have more than one Firefox profile then the file format changes, so extracting the folder name becomes more tricky. Here's the script to do that:

#!/bin/bash

cd ~/.mozilla/firefox/
if [[ $(grep '\[Profile[^0]\]' profiles.ini) ]]
then PROFPATH=$(tr < profiles.ini -s '\n' '|' | sed 's/\[Profile[0-9]\]/\x0/g; s/$/\x0/; s/.*\x0\([^\x0]*Default=1[^\x0]*\)\x0.*/\1/; s/.*Path=\([^|]*\)|.*/\1/')
else PROFPATH=$(grep 'Path=' profiles.ini | sed 's/^Path=//')
fi

echo $PROFPATH

Explanation how it works in the case of multiple profiles:

  • Converting newlines to | symbol which will act as a field separator.
    Now some sed tricks can be done with this single string.
  • Replacing profile numbers in brackets with NULL symbol to separate profiles. Also adding one more NULL at the end of the string.
  • Lazy quantifier won't help here (and sed hasn't got any), so we searching for the pattern: separator - some non-separator symbols - Default=1 - some non-separator symbols - separator. When this pattern is found, replacing the whole string with it.
  • Similar search, now with Path= and | as a separator.

This script will work in both cases, it selects the appropriate method depending on the amount of profiles.

share|improve this answer
    
Apparently now the default profile is the one in profiles.ini that has the line Default=1 and it can be anywhere in the file (first, middle, last). – Xen2050 Mar 18 at 11:43
    
@Xen2050 Are you sure? I checked 2 different profiles from Ubuntu & Windows machines. Both have no Default=1 line. Both have [Profile0] section with Name=default in them instead. Can you provide your profiles.ini using paste.ubuntu.com ? – whtyger Mar 18 at 13:29
    
It's just got that one extra line, under the 2nd profile actually. I've changed my default profile using the profile manager, try using it too (with the -p option) and see if it changes on yours. There must be related info pages on mozilla.org, but I'm not able to search right now. – Xen2050 Mar 18 at 21:41
    
Did find a link, mentions it along with don't ask/show profile manager & use last selected profile to change the default kb.mozillazine.org/Profiles.ini_file – Xen2050 Mar 18 at 21:50
    
@Xen2050 Added script to process multi-profile profiles.ini. – whtyger Mar 20 at 6:23

Your default profile directory is stored under home directory.

cd ~/.mozilla/firefox 

Here you will find something like xxxxxxxx.default. This is the location where all your personal data is stored.

You can run the command firefox -P to show the profiles available and select one from the list.

share|improve this answer
    
The correct dir should be .mozilla – Arch user Jan 10 '13 at 13:39
1  
That's what I'm doing right now, find $HOMEDIR/.mozilla/firefox/ -maxdepth 1 -type d -name *.default | head -1. But that CAN fail. It's not a good way to do it. – Jorge Suárez de Lis Jan 10 '13 at 16:33

I know that this a little older, but in case someone else also needs this information, here is how I set the default profile variable in a wrapper script for firefox:

def_Pfile=`cat "$HOME/.mozilla/firefox/profiles.ini" | sed -n -e 's/^.*Path=//p' | head -n 1`

Hope this helps, as it works for me.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.