Вопрос или проблема
Я пытаюсь получить директорию профиля по умолчанию для firefox (той, которая открывается автоматически) из Bash. Как мне поступить? Я не могу найти полезные опции, выполнив firefox --help
.
Попробуйте grep 'Path="' ~/.mozilla/firefox/profiles.ini | sed s/^Path=//
. Имя папки профиля по умолчанию хранится в profiles.ini
. Это будет работать хорошо, если у вас только один профиль.
Если у вас больше одного профиля Firefox, формат файла изменяется, и извлечение имени папки становится более сложным. Вот скрипт для этого:
#!/bin/bash
cd ~/.mozilla/firefox/
if [[ $(grep '\[Profile[^0]\]' profiles.ini) ]]
then PROFPATH=$(grep -E '^\[Profile|^Path|^Default' profiles.ini | grep -1 '^Default=1' | grep '^Path' | cut -c6-)
else PROFPATH=$(grep 'Path="' profiles.ini | sed "s/^Path=//")
fi
echo $PROFPATH
Этот скрипт будет работать в обоих случаях, он выбирает подходящий метод в зависимости от количества профилей. Работает и в OSX.
Ваша директория профиля по умолчанию хранится в домашней директории.
cd ~/.mozilla/firefox
Здесь вы найдете что-то вроде xxxxxxxx.default. Это местоположение, где хранятся все ваши личные данные.
Вы можете выполнить команду firefox -P
, чтобы отобразить доступные профили и выбрать один из списка.
Я знаю, что это немного устарело, но на случай, если кому-то еще нужна эта информация, вот как я устанавливаю переменную профиля по умолчанию в обертке для firefox:
def_Pfile=`cat "$HOME/.mozilla/firefox/profiles.ini" | sed -n -e 's/^.*Path=//p' | head -n 1`
Надеюсь, это поможет, так как у меня работает.
Ответы здесь не учитывают то, что firefox также может быть установлен с помощью snap, что довольно распространено в Ubuntu, так как выполнение sudo apt install firefox
контроверсионно устанавливает пакет Firefox Snap по умолчанию. Ubuntu сделала переключение, начиная с версии 21.10, где пакет apt для Firefox стал переходным пакетом, который устанавливает версию Snap.
Также директория профиля отличается при установке flatpak, что менее распространено, насколько мне известно, но также должно учитываться. Учитывая эти сценарии, директория профиля может находиться в трех разных местах:
"$HOME/.mozilla/firefox" # По умолчанию для apt или ручной установки
"$HOME/.var/app/org.mozilla.firefox/.mozilla/firefox" # Установка Flatpak
"$HOME/snap/firefox/common/.mozilla/firefox" # Установка Snap
Также, вероятно, нам следует обработать случай, когда может существовать несколько из этих директории, возможно, посмотрев на последнее изменение или предложив пользователю выбрать.
На мой взгляд, firefox должен профилировать флаг командной строки для легкого запроса директории профиля по умолчанию.
Это работает отлично на linux.
Мой profile.ini
cat "$HOME/.mozilla/firefox/profiles.ini"
[Install4F96D1932A9F858E]
Default=4hthy81n.default-release
Locked=1
[Profile1]
Name=default
IsRelative=1
Path=t6kac19e.default
Default=1
[Profile0]
Name=default-release
IsRelative=1
Path=4hthy81n.default-release
[General]
StartWithLastProfile=1
Version=2
Так что выполните эту команду:
grep "Default=.*\.default*" "$HOME/.mozilla/firefox/profiles.ini" | cut -d"=" -f2
about:profiles:
Ответ или решение
Для того чтобы получить директорию профиля по умолчанию для браузера Firefox из Bash, необходимо учесть несколько моментов, связанных с тем, как Firefox управляет профилями пользователей. Профили Firefox хранятся в файле profiles.ini
, который находится в домашней директории пользователя. Данный файл содержит информацию о профилях, включая информацию о том, какой из профилей является профилем по умолчанию.
1. Путь к директории профиля
В зависимости от способа установки Firefox (через APT, Snap или Flatpak) директория профиля может находиться в разных местах:
-
Для стандартной установки (APT):
$HOME/.mozilla/firefox
-
При установке через Snap (Ubuntu 21.10 и выше):
$HOME/snap/firefox/common/.mozilla/firefox
-
Для Flatpak-установки:
$HOME/.var/app/org.mozilla.firefox/.mozilla/firefox
Таким образом, сначала нужно определить, где именно у вас находится файл profiles.ini
.
2. Извлечение профиля по умолчанию
Вы можете использовать следующий Bash-скрипт для извлечения директории профиля по умолчанию:
#!/bin/bash
# Определяем возможные директории профиля
declare -a profile_dirs=(
"$HOME/.mozilla/firefox"
"$HOME/snap/firefox/common/.mozilla/firefox"
"$HOME/.var/app/org.mozilla.firefox/.mozilla/firefox"
)
# Ищем существующий каталог профиля
for dir in "${profile_dirs[@]}"; do
if [ -d "$dir" ] && [ -f "$dir/profiles.ini" ]; then
PROFILES_INI="$dir/profiles.ini"
break
fi
done
# Проверка на наличие файла profiles.ini
if [[ -z "$PROFILES_INI" ]]; then
echo "Файл profiles.ini не найден."
exit 1
fi
# Извлечение пути профиля по умолчанию
DEFAULT_PROFILE=$(grep -A 1 "Default=1" "$PROFILES_INI" | grep "Path=" | cut -d'=' -f2 | tr -d ' ')
# Формируем полный путь к директории профиля
if [[ -n "$DEFAULT_PROFILE" ]]; then
DEFAULT_PROFILE_PATH="$dir/$DEFAULT_PROFILE"
echo "Директория профиля по умолчанию: $DEFAULT_PROFILE_PATH"
else
echo "Директория профиля по умолчанию не найдена."
fi
3. Как работает скрипт
- Определение директорий: Скрипт сначала определяет массив директорий, в которых может находиться
profiles.ini
. - Проверка существования: Он проверяет, существует ли
profiles.ini
в одной из этих директорий. - Извлечение информации: Если файл найден, происходит извлечение строки, указывающей на директорию профиля.
- Вывод результата: В конце скрипта выводится полный путь к директории профиля по умолчанию.
4. Оптимизация и улучшения
Данный скрипт можно дополнить функционалом, который позволит пользователю выбирать между несколькими профилями, если таковые имеются. Это может сделать работу с профилями более удобной и интуитивной.
Заключение
Теперь у вас есть инструмент для извлечения профиля по умолчанию в Firefox с использованием Bash. Скрипт учитывает различные способы установки Firefox и позволяет эффективно находить нужную информацию.