Как я постоянно устанавливаю свои изменения bashrc?

Каждый раз я вхожу в SSH, я должен вручную получить bashrc файл для установки моих переменных пути путем, я хочу. Как у меня есть удар, делают это автоматически? Разве это не должно быть автоматически?

8
задан 12.04.2010, 22:56

3 ответа

Существует ~/.profile (или ~/.bash-profile) файл, который работает при каждом входе в систему. Необходимо установить переменные среды там (с export команда). И существует ~/.bashrc файл, который выполняется при открытии каждого, продает. Команды, которые не наследованы ко всем подоболочкам, как псевдоним, могут быть установлены здесь (хотя для хорошей практики, псевдонимы должны быть установлены в ~/.aliases, который автоматически получен ~/.bashrc).

Если это не работает на Вас, Вы ни одно использование неправильное имя файла (отсутствующий "." с начала?), или Вы не используете удар в качестве своей оболочки. В последнем случае попробовать passwd -s /bin/bash (или chsh -s /bin/bash, В зависимости от ОС), или вызов SSH следующий путь: 

ssh username@host bash`
5
ответ дан 07.12.2019, 14:05

Необходимо также знать о $BASH_ENV.

То, какие файлы читаются ударом, когда он запускает, зависит от того, если сессия является интерактивной или нет. Иногда может быть проблема, где не ясно, является ли сессия интерактивной. Таким образом помимо ~/.bashrc Вы могли бы хотеть также экспортировать и установить переменный BASH_ENV для указания на файл, содержащий ПУТЬ и другие настройки, в которых Вы нуждаетесь. BASH_ENV может быть установлен указать на Ваш .bashrc файл (иногда, это - .bash_rc), пока нет никаких интерактивных команд там (чтобы быть безопасным использованием отдельный файл, скажите ~/.bash_env). Из страниц справочника удара:


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

То, когда удар запускается нев интерактивном режиме, для выполнения сценария оболочки, например, он ищет переменный BASH_ENV в среде, разворачивает ее значение, если это появляется там и использует расширенное значение в качестве названия файла, чтобы читать и выполниться. Bash ведет себя, как будто следующая команда выполнялась:

  if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi

но значение переменной ПУТИ не используется для поиска имени файла.


3
ответ дан 07.12.2019, 14:05

Я знаю, что это старо, но я думаю на новой оболочке входа в систему, удар ищет единственный файл для выполнения. Это ищет .bash_profile, затем .profile, затем .bashrc. Если это найдет .bash_profile или .profile, то это не будет далее искать .bashrc.

Решение, вставленное в Ваш .profile:

[ -f $HOME/.bashrc ] && . $HOME/.bashrc
1
ответ дан 07.12.2019, 14:05

Теги

Похожие вопросы