Что делать, когда .profile не существует для редактирования PATH?

Я хочу изменить $PATH среды $PATH . Согласно нескольким учебным пособиям и другим источникам (например, это Q & A ), наиболее распространенным способом является редактирование ~/.profile . Однако для меня такого файла нет. Что я могу сделать? (Существуют ли разные имена в некоторых системах? Должен ли я создать его? Что нужно делать там? Существуют ли другие способы?)

Я пользователь в сетевом кластере, очевидно, я не хочу редактировать любые глобальные переменные среды. Я уже редактировал ~/.bashrc чтобы изменить некоторые вещи для моего пользователя, и есть несколько ~/. -файлы, но не ~/.profile .

Я на Ubuntu 16.04.2 LTS Codename: Xenial. echo $PATH дает мне только некоторые глобальные bin-каталоги, но после установки некоторых пользовательских контейнеров (в /path/to/home~/expanded/.local/bin/ ) я просто хочу добавить это в PATH.

Если у вас есть файл ~/.bash_profile , тогда вместо этого отредактируйте его (поскольку вы, похоже, используете bash (поскольку вы находитесь в Linux, и поскольку вы упоминаете, что есть файл ~/.bashrc который вы редактировали ранее)) , Оболочка bash будет пытаться читать ~/.profile если ~/.bash_profile не существует. Если ни один файл не существует, вы можете создать файл ~/.bash_profile .

Строка, которую вы, вероятно, захотите добавить, – это

 PATH="$HOME/.local/bin:$PATH" 

или

 PATH="$PATH:$HOME/.local/bin" 

в зависимости от того, хотите ли вы / нужен дополнительный каталог для поиска в первый или последний раз.

export невозможен, поскольку переменная PATH уже экспортирована.

$HOME – это то же самое, что и ~ , но IMHO более выразительно в сценариях оболочки. Он также ведет себя как правильная переменная, а ~ нет. См. Например, почему тильда (~) не расширяется внутри двойных кавычек?

Также обратите внимание, что пути разделены с помощью косой черты ( / ) на Unix, а не на обратную косую черту ( \ ), поэтому вы хотите ~/.bash_profile а не ~\.bash_profile .


Большинство sh подобных оболочек (из которых bash один) читает .profile в домашнем каталоге пользователя при запуске в качестве оболочки входа. Вот почему ответ, который вы связали с упоминанием .profile а не .bash_profile ; используемая конкретная оболочка не упоминалась в вопросе.

Некоторые оболочки, например bash , игнорируют его, если присутствует собственный специальный файл автозагрузки.