Почему нет .bashrc запускается автоматически?
Я поместил некоторые команды псевдонимов в мой файл .bashrc
, чтобы они могли загружаться каждый раз, когда я открываю новое окно терминала. Но этого не происходит.
Мне нужно выбрать скрипт run script:
в Предпочтения> Preferences> " MyDefaultTheme "> Префикс оболочки и добавить:
source .bashrc && clear
, чтобы он работал ...
Это кажется странным, поскольку во многих учебниках говорится, что вам просто нужно добавить файл .bashrc
, и все это хорошо.
Заметьте, что я не запускаюсь в bash
при использовании терминала, мне нравится другой (по умолчанию) один (не знаю, что это) лучше, потому что он показывает мне, где я все время, например:
>>d54c6b47b:~ romeo$
вместо:
>>bash$
В bash все загружается как должно быть.
Итак, мой вопрос: почему мой файл .bashrc
не загружался автоматически и мне нужно было добавить этот параметр, чтобы вызывать его каждый раз?
Также в некоторых уроках мне сказали сделать что-то вроде:
$alias la=’ls -la’ >> ~/.bashrc
, который должен написать псевдоним для моего .bashrc
, это тоже не работает ...
Обратите внимание, что я новичок UNIX, поэтому будьте осторожны.
12 ответов
Просто поместите это в свой .profile
файл из своего домашнего каталога и он должен работать при следующем запуске новой оболочки или после запуска source ~/.profile
В этой ссылке четко указывается порядок, в котором файлы запуска считываются и загружаются оболочкой: http://hayne.net/MacDev/Notes/unixFAQ.html#shellStartup
Был там, сделал это. О чем я узнал, OS X не читает файл .bashrc
при запуске bash. Вместо этого он считывает следующие файлы (в следующем порядке):
-
/etc/profile
-
~/.bash_profile
-
~/.bash_login
-
~/.profile
См. также информативный и полезный комментарий Криса Джонсена :
По умолчанию Terminal запускает оболочку через
/usr/bin/login
, что делает оболочку оболочкой входа. На каждой платформе (а не только в Mac OS X) bash не использует.bashrc
для оболочек входа (только/etc/profile
) и первый из.bash_profile
,.bash_login
,.profile
, который существует и доступен для чтения). Вот почему «putsource ~/.bashrc
в вашем.bash_profile
" является стандартным советом
Я обычно просто помещаю вещи, которые я обычно помещал в ~/.bashrc
, в ~/.profile
â € " работал до сих пор, как прелесть.
Я помещал все в ~/.bashrc
и просто source ~/.bashrc
в .profile.
Это позволяет сеансам экрана и xterm (и я думаю, tmux) наследовать мою среду, поскольку сеансы, не связанные с входом в систему, запускаются только .bashrc
, тогда как сеансы входа в систему (например, терминал или iTerm) запускают только .profile
.
Существует два сценария:
- Вы используете Linux
- Вы используете Mac Os X
Для обоих вы хотите указать исходный код ~/.bashrc
в своем профиле, который загружается или загружается, когда начинается ваша оболочка для вашего терминала.
LINUX
В Linux ~/.profile
автоматически запускается в вашей оболочке при ее запуске. Итак, если вы перейдете к своему терминалу и введите cd ~; ls -A
, вы увидите все ваши файлы и каталоги в своем домашнем каталоге (/home/usrname/
). Вы должны увидеть файл с именем .profile
. Это файл, который автоматически «выдается» при запуске терминала.
Если вы хотите добавить псевдонимы и функции в ~/.bashrc
(это то, что я делаю), тогда вы должны (внутри ~/.profile
добавить if, который проверяет, является ли ~/.bashrc
непустым файлом, а затем его источник.
Чтобы проверить, действительно ли ваш ~/.profile
вводит nano ~/.profile
. Это откроет его в текстовом редакторе (вы можете использовать gedit, если знаете, что у вас есть это или даже vim, если вы знаете, как его использовать). Вы можете получить пустой текстовый файл (вы не должны), но если вы просто продолжаете. Если вы не видите строку в любом месте , которая говорит source ~/.bashrc
, тогда введите следующие строки где-нибудь (поставьте ее в разумном месте, например, в конце или начале и не в середине оператора if):
if [ -s ~/.bashrc ]; then
source ~/.bashrc;
fi
Это проверяет, является ли ~/.bashrc
непустым файлом (с if [ -s ~/.bashrc ]
), и если он такой, он это источники. Довольно просто. Теперь вы можете добавить любой действительный псевдоним, функцию, переменную и т. Д. В ~/.bashrc
.
MAC OS X
По умолчанию Max OS X source ~/.bash_profile
. Чтобы иметь возможность добавлять вещи в ~/.bashrc
(что опять же то, что я делаю в OS X, также), вы выполняете ту же процедуру, что и linux. В терминале введите cd ~; nano .bash_profile
. Проверьте строку, которая говорит source ~/.bashrc
, и если она там не добавляется вышеприведенный оператор if (if [ -s ~/.bashrc ]; then source ~/.bashrc; fi
).
ПРИМЕЧАНИЯ
При написании оператора if обязательно оставляйте пробелы между главным образом (например, if [ -s ~/.bashrc]; then echo "found"; fi
не работает, потому что есть без пробела ~/.bashrc
и ]
- интерпретатор будет считать это одним словом).
Если вы хотите выяснить, как лучше проверить информацию в инструкции if, перейдите к терминалу и введите man \[
; это, по сути, дает вам прогон инструкции if. Например, if [ -f /path/to/file ]; then echo "it's a file"; else echo "not a file"; fi
проверяет, является ли файл /path/to/file
файлом, и если он печатает на stdout соответственно. Я всегда ссылаюсь на это, а также на простые и быстрые справки: 7.2. Операторы проверки файлов .
Надеюсь, это поможет. Я помню, как я был смущен, когда начал все это (что было не так давно); поэтому, удачи с будущими UNIX-начинаниями!
Sourcing .profile в .bash_profile сделал это для меня
echo 'source ~/.profile' >> ~/.bash_profile
Я обнаружил, что после установки rvm (auto-installer, без ручного редактирования) он создал файл ~/.bash_login
для себя, где раньше у меня его не было.
Однако это означает, что мои настройки ~ .profile и псевдонимы больше не загружаются! Много ярлыков исчезло. Я думал, что они работают последовательно, а не исключительно: - /
Я добавил
~/.profile
до . ~/.profile
, чтобы оживить все, что я ожидал.
Ввод ...
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function
... в ~/.bashrc
, а затем исходный код ~/.bashrc
в мой ~/.bash_profile
не работает для установленной программы терминала.
Но затем я перешел в раскрывающееся меню меню Изменить> Настройки профиля , Заголовок и команда и выберите Запустить команду в качестве оболочки входа из раздела команд этой страницы.
После этого запуск нового терминала показывает желаемый результат, когда я печатаю
type rvm|head -1
то есть. «rvm - функция». Это не сделало этого, пока я не сделал это изменение, и это единственное изменение, которое я внес после изменений .bash_profile
и .bashrc
, описанных в других ответах здесь.
Прежде всего позвольте мне сказать вам, что ~/.bashrc
- это файл, который запускается каждый раз при вызове второй оболочки (например, при запуске скрипта оболочки) и ~/.profile
вызывается для каждого входа.
Поэтому я рекомендую вам написать . ~/.bashrc
в вашем файле ~/.profile
, и эта команда будет выполнять файл bashrc каждый раз, когда вы входите в систему.
Я столкнулся с той же проблемой после установки rbenv на моем удаленном сервере (Digital Ocean) Ubuntu 16.04.
Он каким-то образом создал ~/.bash_profile
. Это тот же ~/.bashrc
в системе OS X.
И Ubuntu начал читать только ~/.bash_profile
, но не ~/.bashrc
, как и должно быть.
Итак, я просто выполнил резервное копирование своих данных в ~/.bash_profile
с помощью этого:
mv ~/.bash_profile ~/.bash_profile.bak
И переименовал старый ~/.bashrc
в ~/.bash_profile
mv ~/.bashrc ~/.bash_profile
Это сработало для меня. После моего входа в ssh у меня есть все, загруженное в ~/.bashrc
.
Если это может помочь кому-то еще ...
Убедитесь, что вы редактируете правильный файл .bashrc
для нужного пользователя. У меня была аналогичная проблема с использованием Vagrant. После запуска vagrant ssh
мой .bashrc
файл не запускался. Решение было простым в том, что я думал, что бродяга входит в систему с пользователем с именем vagrant, и я фактически входил в систему как другой пользователь. Поэтому я редактировал неправильный файл .bashrc
. После редактирования правильного файла .bashrc
мои псевдонимы были распознаны.
Чтобы поддерживать стиль входа в систему OSX .profile
и поддерживать нормальное поведение bash .bashrc
, вы можете использовать файл .bashrc
, если вы перейдите между обычным nix и OSX, предоставив символическую ссылку на ваш .bashrc
файл с именем .bash_profile
. Просто убедитесь, что этот файл еще не существует, прежде чем пытаться это сделать, но так я это делаю.
ln -s .bashrc .bash_profile
/etc /bashrc предназначен для глобальных профилей в системах Mac. Вы можете добавить: alias ls = "ls -G" в начало этого файла и ваш хороший, у всех будут раскрашенные файлы и папки в системе, поэтому вам не нужно устанавливать ничего лишнего для каждого отдельного пользователя. Вы также заметите вместе с «sudo su -», чтобы укорениться от себя, у вас все еще будут раскрашенные файлы и папки без дополнительных головных болей.
Еще один интересный совет: при использовании Iterm2 для Mac, импорт цветовых профилей сразу же отобразит раскраску файлов и папок в соответствии с вашей цветовой схемой после установки этой опции «/etc /bashrc».