Как добавить каталог в $PATH
в Ubuntu и сделать изменения постоянными?
Путь, установленный в .bash_profile
будет установлен только в оболочке для входа в систему (bash -l
).
Если вы поместите свой путь в .profile
, то он будет доступен для всего сеанса работы с десктопом. Это означает, что даже metacity будет использовать его.
Например ~/.profile
:
if [ -d "$HOME/bin" ] ; then
PATH="$PATH:$HOME/bin"
fi
Btw, Вы можете проверить переменную PATH процесса, посмотрев на его окружение в /proc/[pid]/environ
(замените [pid] на номер из ps axf
). Например, используйте grep -z "^PATH" /proc/[pid]/environ
bash
в качестве оболочки для входа в систему не анализирует .profile
, если существует либо .bash_profile
, либо .bash_login
. Из man bash
:
ищет ~/.bash_profile, ~/.bash_login, и ~/.profile, в котором приказ, а также читает и выполняет команды с первого существующего и является читабельным.
Смотрите ответы ниже для получения информации о .pam_environment
, или .bashrc
для интерактивных нелогин-оболочек, или установите значение глобально для всех пользователей, поместив скрипт в /etc/profile. d/
или используйте /etc/X11/Xsession.d/
для воздействия на сеанс диспетчеров.
Откройте свой терминал, введите gedit .profile
и вставьте следующее:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$PATH:$HOME/bin"
fi
#the following line add Bin where you dont have a Bin folder on your $HOME
PATH="$PATH:/home/mongo/Documents/mongodb-linux-i686-2.2.2/bin"
Закройте и откройте терминал, он должен работать.
Положите его на ваш ~/.bashrc
или как там его называют, вы используете rc (или на вышеупомянутый ~/. profile
) И ~/.xsessionrc
, так что он также будет работать в X (внешняя оболочка).
Всякий раз, когда я «устанавливаю» свою папку со сценариями BASH, я следую шаблону теста для $ HOME / bin
, которая находится в большинстве файлов .profile в последних версиях Ubuntu. Я установил тест, который выглядит как
if [ -d "/usr/scripts" ]; then
PATH="/usr/scripts:$PATH"
fi
. Он работает примерно в 100% случаев и дает мне возможность изменить его в текстовом редакторе графического интерфейса с помощью быстрой команды «Заменить все», если я когда-нибудь решу переместить / scripts
где-то ближе к моей папке $ HOME
. Я не делал этого в шести установках Ubuntu, но «всегда есть завтра». S
BZT
В терминале, cd
в каталог_you_want_to_add_in_the_path
echo "export PATH=$(pwd):\${PATH}" >> ~/.bashrc
Это была не моя идея. Я нашел этот способ экспортировать путь на этом блоге здесь.
. Даже если системные сценарии не используют это,
в любом из случаев, когда нужно добавить путь (например, $ HOME / bin
) к переменной среды PATH, следует использовать
PATH="${PATH:+${PATH}:}$HOME/bin"
для добавления (вместо PATH = "$ ПУТЬ: $ HOME / bin "
),
и
PATH="$HOME/bin${PATH:+:${PATH}}"
для добавления в начало (вместо PATH = "$ HOME / bin: $ PATH"
).
Это позволяет избежать ложного начального / конечного двоеточия, когда изначально $ PATH
пусто, что может иметь нежелательные последствия.
См., например, https://unix.stackexchange.com/questions/162891/append-to-path-like-variable-without-creating-leading-colon-if-unset
Рекомендуемый способ отредактировать PATH
- из файла / etc / environment
Пример вывода / etc / environment
:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
Например, чтобы добавить новый путь / home / username / mydir
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/username/mydir"
Затем перезагрузите компьютер.
Общесистемные переменные среды
Подходящим файлом для настроек переменных среды, которые влияют на систему в целом (а не только на конкретного пользователя), является / etc / environment. Альтернативой является создание файла для этой цели в каталоге /etc/profile.d.
/ etc / environment
Этот файл специально предназначен для общесистемных настроек переменных среды. Это не файл сценария, а скорее состоит из выражений присваивания, по одному на строку.
Примечание: Расширение переменной не работает в /etc/environment.
Более подробную информацию можно найти здесь: EnvironmentVariables
Вы можете вернуться к старому стилю переключения окон, включив плагин Static Application Switcher в CompizConfig Settings Manager:
Шаги:
CompizConfig Manager получает через sudo apt-get install compizconfig-settings-manager
(спасибо @donbright)
sudo apt-get install compiz-plugins
, чтобы заставить отобразиться статический переключатель приложений. (благодаря @Milimetric)
CompizConfig Settings Manager запускается с помощью ввода ccsm
в терминале (благодаря @donbright)
Отключите клавиатурные сокращения для коммутатора Unity, сняв флажок CompizConfig Settings Manager ▸ Рабочий стол ▸ Плагин Ubuntu Unity ▸ Переключатель ▸ Клавиша для запуска коммутатора ▸ Включено и Ключ для запуска коммутатора в обратном направлении ▸ Включено
Включить переключатель статических приложений, установив флажок CompizConfig Settings Manager ▸ Управление окнами ▸ Переключатель статических приложений ▸ Включить переключатель статических приложений
Для абсолютных новичков (как и я), которым более комфортен GUI:
$HOME
. . Профиль
и нажмите на Открыть с помощью текстового редактора.PATH="$PATH:/my/path/foo"
..profile
).Рекомендуемое место для определения постоянных, общесистемных переменных окружения, применяемых ко всем пользователям:
/etc/environment
(именно там, где определено значение по умолчанию PATH
)
Это будет работать на рабочем столе или в консоли, гном-терминале или TTY, под дождем или в блеске ;)
Для редактирования, откройте терминал и введите:
sudoedit /etc/окружение.
(или откройте файл с помощью sudo
в любимом текстовом редакторе)
Чтобы заставить его работать без перезагрузки, запустите . /etc/окружение
или источник /etc/окружение
. Так как этот файл является простым сценарием, он будет запущен и назначить новый путь к переменной окружения PATH
. Для проверки выполнения env
и просмотра значения PATH
в листинге.
Связанные:
Редактирование .bashrc
в вашем домашнем каталоге и добавление следующей строки:
export PATH="/path/to/dir:$PATH"
Чтобы изменения вступили в силу, вам нужно будет исходить из вашего .bashrc
или выйти/зайти в систему (или перезапустить терминал). Чтобы получить исходные тексты вашего .bashrc
, просто наберите
$ source ~/.bashrc
По-моему, канонический способ в Ubuntu:
создать новый файл в разделе /etc/profile.d/
sudo vi /etc/profile.d/SCRIPT_NAME.sh
добавить:
экспортировать PATH="ВАШ_PATH_БЕЗ_ПУТЕХОДА_СЛАШ:$PATH".
и дать ему выполнить разрешение
sudo chmod a+x /etc/profile.d/SCRIPT_NAME.sh
Для Ubuntu отредактируйте ~/.bashrc
и добавьте следующую строку.
. ~/.bash_profile
Затем отредактируйте свой .bash_profile так, как вам нужно.....
sudo vi /etc/profile.d/SCRIPT_NAME.sh
добавить туда
export PATH=YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH
Чтобы установить его для всей системы, добавьте строку export PATH = / path / you / add: $ PATH
в конец / etc / profile
.
Чтобы добавить каталог только для вошедшего в систему пользователя, добавьте ту же строку в ~ / .bash_profile
.
Поместите эту строку в ваш ~/.bashrc
файл.
Он получает исходные данные всякий раз, когда вы открываете терминал
EDIT: Основываясь на комментариях ниже, для более общих настроек, которые будут применяться ко всем shell'ам (в том числе, когда вы нажмете Alt-F2 в Unity), добавьте строку к вашему файлу ~/.profile
. Однако, вероятно, не стоит делать оба варианта, так как при открытии терминала путь будет дважды добавлен в Ваше окружение PATH
.
Для постоянных переменных среды, доступных только определенным пользователям. Я настоятельно рекомендую официальную документацию Ubuntu.
https://help.ubuntu.com/community/EnvironmentVariables
Ссылаясь на документацию выше, я установил свои инструменты пути к Android SDK :
~ / .pam_environment
в домашнем каталоге. PATH DEFAULT = $ {PATH}: ~ / android-sdk-linux / tools
. Добавление его в .bashrc сработает, но я думаю, что более традиционный способ настройки переменных пути - в .bash_profile, добавив следующие строки.
PATH=$PATH:/my/path/foo
export PATH
Согласно этому потоку кажется, что поведение Ubuntu немного отличается от поведения RedHat и клонов.