Почему нет .bashrc запускается автоматически?

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

Мне нужно выбрать скрипт run script: в Предпочтения> Preferences> " MyDefaultTheme "> Префикс оболочки и добавить: source .bashrc && clear, чтобы он работал ...

Это кажется странным, поскольку во многих учебниках говорится, что вам просто нужно добавить файл .bashrc, и все это хорошо.

Заметьте, что я не запускаюсь в bash при использовании терминала, мне нравится другой (по умолчанию) один (не знаю, что это) лучше, потому что он показывает мне, где я все время, например:

>>d54c6b47b:~ romeo$

вместо:

>>bash$

В bash все загружается как должно быть.

Итак, мой вопрос: почему мой файл .bashrc не загружался автоматически и мне нужно было добавить этот параметр, чтобы вызывать его каждый раз?

Также в некоторых уроках мне сказали сделать что-то вроде:

$alias la=’ls -la’ >> ~/.bashrc

, который должен написать псевдоним для моего .bashrc, это тоже не работает ...

Обратите внимание, что я новичок UNIX, поэтому будьте осторожны.

164 голоса | спросил romeovs 28 AMpThu, 28 Apr 2011 01:08:53 +040008Thursday 2011, 01:08:53

12 ответов


81

Просто поместите это в свой .profile файл из своего домашнего каталога и он должен работать при следующем запуске новой оболочки или после запуска source ~/.profile

В этой ссылке четко указывается порядок, в котором файлы запуска считываются и загружаются оболочкой: http://hayne.net/MacDev/Notes/unixFAQ.html#shellStartup

ответил Cosu 28 AMpThu, 28 Apr 2011 02:47:18 +040047Thursday 2011, 02:47:18
183

Был там, сделал это. О чем я узнал, OS X не читает файл .bashrc при запуске bash. Вместо этого он считывает следующие файлы (в следующем порядке):

  1. /etc/profile
  2. ~/.bash_profile
  3. ~/.bash_login
  4. ~/.profile

См. также информативный и полезный комментарий Криса Джонсена :

  

По умолчанию Terminal запускает оболочку через /usr/bin/login, что делает оболочку оболочкой входа. На каждой платформе (а не только в Mac OS X) bash не использует .bashrc для оболочек входа (только /etc/profile) и первый из .bash_profile, .bash_login, .profile, который существует и доступен для чтения). Вот почему «put source ~/.bashrc в вашем .bash_profile" является стандартным советом

Я обычно просто помещаю вещи, которые я обычно помещал в ~/.bashrc, в ~/.profile â € " работал до сих пор, как прелесть.

ответил Jari Keinänen 28 AMpThu, 28 Apr 2011 03:53:56 +040053Thursday 2011, 03:53:56
24

Я помещал все в ~/.bashrc и просто source ~/.bashrc в .profile.

Это позволяет сеансам экрана и xterm (и я думаю, tmux) наследовать мою среду, поскольку сеансы, не связанные с входом в систему, запускаются только .bashrc, тогда как сеансы входа в систему (например, терминал или iTerm) запускают только .profile.

ответил anu 28 AMpThu, 28 Apr 2011 06:11:29 +040011Thursday 2011, 06:11:29
13

Существует два сценария:

  1. Вы используете Linux
  2. Вы используете 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-начинаниями!

ответил Dylan 26 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 26 Sep 2014 19:45:43 +0400 2014, 19:45:43
10

Sourcing .profile в .bash_profile сделал это для меня

echo 'source ~/.profile' >> ~/.bash_profile
ответил Luis S 13 +04002012-10-13T06:37:37+04:00312012bEurope/MoscowSat, 13 Oct 2012 06:37:37 +0400 2012, 06:37:37
5

Я обнаружил, что после установки rvm (auto-installer, без ручного редактирования) он создал файл ~/.bash_login для себя, где раньше у меня его не было.

Однако это означает, что мои настройки ~ .profile и псевдонимы больше не загружаются! Много ярлыков исчезло. Я думал, что они работают последовательно, а не исключительно: - /

Я добавил

~/.profile

до . ~/.profile , чтобы оживить все, что я ожидал.

ответил dman 28 J000000Saturday12 2012, 16:33:02
3

Ввод ...

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function

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

Но затем я перешел в раскрывающееся меню меню Изменить> Настройки профиля , Заголовок и команда и выберите Запустить команду в качестве оболочки входа из раздела команд этой страницы.

После этого запуск нового терминала показывает желаемый результат, когда я печатаю

 type rvm|head -1

то есть. «rvm - функция». Это не сделало этого, пока я не сделал это изменение, и это единственное изменение, которое я внес после изменений .bash_profile и .bashrc, описанных в других ответах здесь.

ответил LiquidMark 15 FebruaryEurope/MoscowbWed, 15 Feb 2012 22:46:02 +0400000000pmWed, 15 Feb 2012 22:46:02 +040012 2012, 22:46:02
2

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

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

ответил arun rana 24 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 24 Sep 2012 16:51:08 +0400 2012, 16:51:08
1

Я столкнулся с той же проблемой после установки 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.

ответил zhisme 2 J000000Sunday17 2017, 18:00:36
0

Если это может помочь кому-то еще ...

Убедитесь, что вы редактируете правильный файл .bashrc для нужного пользователя. У меня была аналогичная проблема с использованием Vagrant. После запуска vagrant ssh мой .bashrc файл не запускался. Решение было простым в том, что я думал, что бродяга входит в систему с пользователем с именем vagrant, и я фактически входил в систему как другой пользователь. Поэтому я редактировал неправильный файл .bashrc. После редактирования правильного файла .bashrc мои псевдонимы были распознаны.

ответил Allen 9 PMpMon, 09 Apr 2018 20:18:56 +030018Monday 2018, 20:18:56
-2

Чтобы поддерживать стиль входа в систему OSX .profile и поддерживать нормальное поведение bash .bashrc, вы можете использовать файл .bashrc, если вы перейдите между обычным nix и OSX, предоставив символическую ссылку на ваш .bashrc файл с именем .bash_profile. Просто убедитесь, что этот файл еще не существует, прежде чем пытаться это сделать, но так я это делаю.

ln -s .bashrc .bash_profile
ответил Inkspeck 4 J0000006Europe/Moscow 2013, 00:08:50
-2

/etc /bashrc предназначен для глобальных профилей в системах Mac. Вы можете добавить: alias ls = "ls -G" в начало этого файла и ваш хороший, у всех будут раскрашенные файлы и папки в системе, поэтому вам не нужно устанавливать ничего лишнего для каждого отдельного пользователя. Вы также заметите вместе с «sudo su -», чтобы укорениться от себя, у вас все еще будут раскрашенные файлы и папки без дополнительных головных болей.

Еще один интересный совет: при использовании Iterm2 для Mac, импорт цветовых профилей сразу же отобразит раскраску файлов и папок в соответствии с вашей цветовой схемой после установки этой опции «/etc /bashrc».

ответил Sulayman Touray 8 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 08 Sep 2016 15:39:24 +0300 2016, 15:39:24

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132