Вопрос или проблема
Я заметил, что стандартное расположение файлов конфигурации nushell на Mac OS — ~/Library/Application Support/nushell/
, возможно ли изменить его на другое место?
Запуск nu --help
дает опцию
--config <String> - начать с альтернативного файла конфигурации
Таким образом, запуск с nu --config another/location/config.nu
должен сработать.
Только символическая ссылка сработала для меня на macos m1:
mv ~/Library/Application\ Support/nushell ~/.config/
ln -s ~/.config/nushell ~/Library/Application\ Support/
Я думаю, лучше установить переменную окружения NU_CONFIG_DIR
на нужный путь к директории, поэтому, если вы используете bash, откройте nano ~/.bash_profile
, или если вы используете zsh, откройте nano ~/.zprofile
и добавьте эту строку:
export NU_CONFIG_DIR=/path/to/custom/location
Теперь сохраните и выйдите, затем примените изменения к текущей сессии оболочки следующим образом, если вы находитесь в bash:
source ~/.bash_profile
и если вы находитесь в zsh
source ~/.zprofile
и все, теперь nushell будет использовать указанную директорию (/path/to/custom/location
) как место хранения своих файлов конфигурации, таких как config.toml
и history.txt
!
Nushell теперь поддерживает использование переменной окружения XDG_CONFIG_HOME
для указания расположения файлов конфигурации. Переменная должна быть установлена до запуска Nushell.
Я не пользователь macOS, поэтому надеюсь, что мой процесс и терминология здесь верны. Я полагаю, есть несколько способов установить эти переменные:
-
Из этого ответа Stack Overflow используйте
launchctl setenv XDG_CONFIG_HOME <path>
. -
Если это не сработало, пользователь на сервере Discord Nushell сообщил, что ему нужно было создать LaunchAgent в его пользовательской директории
~/Library/LaunchAgents
как:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>me.oscarvarto.environment</string> <key>ProgramArguments</key> <array> <string>/bin/sh</string> <string>-c</string> <string> launchctl setenv XDG_CONFIG_HOME /Users/oscarvarto/.config && launchctl setenv XDG_CACHE_HOME /Users/oscarvarto/.cache && launchctl setenv XDG_DATA_HOME /Users/oscarvarto/.local/share && launchctl setenv XDG_STATE_HOME /Users/oscarvarto/.local/state && launchctl setenv XDG_RUNTIME_DIR /Users/oscarvarto/.local/run && launchctl setenv XDG_BIN_HOME /Users/oscarvarto/.local/bin </string> </array> <key>RunAtLoad</key> <true/> <key>ServiceIPC</key> <false/> </dict> </plist>
Ответ или решение
Конфигурация Nushell следующая: по умолчанию файлы конфигурации на macOS располагаются в директории ~/Library/Application Support/nushell/
. Возможности изменения этого местоположения существует и имеет несколько способов, которые мы подробнее рассмотрим. Прежде чем приступать к изменению конфигурации, важно понимать, почему вам может понадобиться изменение пути для конфигурационных файлов. Например, могут возникнуть ситуации, когда используется несколько версий программ, или вы хотите синхронизировать настройки через облако.
Теория
Существует несколько методов для изменения местоположения конфигурационных файлов в Nushell. Каждый из этих методов позволяет управлять конфигурациями в зависимости от личных предпочтений и потребностей.
-
Использование параметра командной строки
--config
: Это самый простой способ задать альтернативный файл конфигурации при каждом запуске Nushell. Команда выглядит так:nu --config путь/до/вашего/конфига
, гдепуть/до/вашего/конфига
указывает на новое местоположение вашего конфигурационного файла. -
Символическая ссылка (symlink): Если вы предпочитаете использовать стандартный путь, но хотите, чтобы ваши реальные файлы были в другом месте, можно создать символическую ссылку. Допустим, вы хотите переместить ваши файлы в
~/.config/nushell
, тогда выполните:mv ~/Library/Application\ Support/nushell ~/.config/nushell ln -s ~/.config/nushell ~/Library/Application\ Support/
Это создаст символическую ссылку из нового местоположения в старое, и Nushell будет продолжать использовать стандартный путь, оставаясь в неведении о перемещении.
-
Переменные окружения: Возможно использование переменных окружения, таких как
NU_CONFIG_DIR
, для указания пользовательского пути. Чтобы задать эту переменную, добавьте следующую строку в ваш профиль оболочки:Для Bash:
nano ~/.bash_profile
Добавьте строку:
export NU_CONFIG_DIR=/путь/к/новому/местоположению
Затем выполните:
source ~/.bash_profile
Для Zsh:
nano ~/.zprofile
Добавьте строку:
export NU_CONFIG_DIR=/путь/к/новому/местоположению
Затем выполните:
source ~/.zprofile
-
Использование
XDG_CONFIG_HOME
: В современных системах часто используется этот метод, чтобы перемещать различные конфигурационные файлы. Чтобы задать путь, измените переменную окружения перед запуском Nushell:Используйте команду:
launchctl setenv XDG_CONFIG_HOME /путь/к/новому/местоположению
Пример
Рассмотрим, как все это может работать на практике. Допустим, вы хотите, чтобы ваши конфигурационные файлы Nushell располагались в папке ~/.config/nushell
. Для этого выберите один из вышеупомянутых методов. Если вы решите использовать переменные окружения, то добавьте export NU_CONFIG_DIR=~/.config/nushell
в ваш профиль оболочки. После этого каждый раз, когда вы запускаете Nushell, он будет искать конфигурационные файлы в указанном вами местоположении.
Применение
Итак, чтобы изменить местоположение ваших конфигураций, выберите метод, который наиболее подходит для вашего сценария и рабочего процесса. Если вы предпочитаете просто и быстро сменить конфигурацию на уровне запуска, параметр --config
может быть удобен. Однако, если вы хотите постоянных изменений без необходимости вводить дополнительные параметры при каждом запуске, настройка через переменные окружения — более удобный подход.
В конечном счете, выбор метода зависит от ваших потребностей: если вы работаете с разными системами, учитывайте возможности каждой системы и, может быть, создайте универсальное решение, которое будет хорошо работать в вашей инфраструктуре.
Таким образом, изменение местоположения конфигурационных файлов в Nushell позволяет настраивать рабочее пространство под себя, становится мощным инструментом в арсенале любого IT-специалиста.