{{tag>bash sh shell command}}

====== BASH, SH ======

  * [[:system:shopt|Настройки]]
  * [[:bash:bash-completion|]]
  * [[:bash:keys|]]
  * [[:unix:commands|]] :!:
  * [[:unix:admin|]]
  * [[:develop:shell|]]
  * [[:bash:developing|Программирование]] :!:
  * [[:bash:основы_bash._часть_1|]] :!:
  * [[:bash:основы_bash._часть_2|]] :!:
====== Переменные и конфиг файлы ======

<code>
                     +-----------------+   +------FIRST-------+   +-----------------+
                     |                 |   | ~/.bash_profile  |   |                 |
login shell -------->|  /etc/profile   |-->| ~/.bash_login ------>|  ~/.bashrc      |
                     |                 |   | ~/.profile       |   |                 |
                     +-----------------+   +------------------+   +-----------------+
                     +-----------------+   +-----------------+
                     |                 |   |                 |
interactive shell -->|  ~/.bashrc -------->| /etc/bashrc     |
                     |                 |   |                 |
                     +-----------------+   +-----------------+
                     +-----------------+
                     |                 |
logout shell ------->|  ~/.bash_logout |
                     |                 |
                     +-----------------+

</code>

  * []-->[] - запускается автоматически
  * [--->[] - запускается если прописан или в ручную.
  * FIRST - находит первый доступный, остальные игнорируются

Несколько примечаний:

  * «интерактивная оболочка» должна быть «интерактивной оболочкой без входа в систему», а «оболочка входа в систему» ​​должна быть «интерактивной оболочкой входа в систему».
  * Кроме того, по крайней мере, в Ubuntu, для интерактивных оболочек без входа в систему /etc/bash.bashrc сначала читается ~/.bashrc. Обратите внимание, что /etc/bash.bashrc его нет в ванильном GNU Bash, это модификация, которую делают многие дистрибутивы.

Согласно мануалу по bash, .bash_profile исполняется для оболочек, осуществляющих авторизацию пользователя. .bashrc исполняется для интерактивных оболочек, не авторизующих пользователя.


===== Документация =====

  * [[:system:shell:bash:перенаправление_вывода|]]
  * [[http://www.opennet.ru/docs/RUS/bash_scripting_guide/|http://www.opennet.ru/docs/RUS/bash_scripting_guide/]]
  * [[http://gnu.su/news.php?extend.1613|http://gnu.su/news.php?extend.1613]]
  * [[http://gnu.su/news.php?extend.2448|http://gnu.su/news.php?extend.2448]]
  * [[https://www.opennet.ru/docs/RUS/bash_scripting_guide/x2565.html|https://www.opennet.ru/docs/RUS/bash_scripting_guide/x2565.html]]
  * [[http://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.html|http://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.html]]
  * [[http://www.opennet.ru/docs/RUS/bash_scripting_guide/|http://www.opennet.ru/docs/RUS/bash_scripting_guide/]]
  * [[https://raw.githubusercontent.com/olegberman/the-art-of-command-line/master/README-ru.md|https://raw.githubusercontent.com/olegberman/the-art-of-command-line/master/README-ru.md]]
  * [[http://habrahabr.ru/post/47706/|Частые ошибки программирования на Bash]]
==== Программирования ====

  * [[http://habrahabr.ru/post/47706/|http://habrahabr.ru/post/47706/]] 1 часть
  * [[http://habrahabr.ru/post/47915/|http://habrahabr.ru/post/47915/]] 2 часть
  * [[http://habrahabr.ru/post/48053/|http://habrahabr.ru/post/48053/]] 3 часть
  * [[http://binsh.ru/2008/12/13/bash-pitfalls-part01.html|Частые ошибки программирования на Bash (часть 1)]]
  * [[http://binsh.ru/2008/12/18/bash-pitfalls-part02.html|Частые ошибки программирования на Bash (часть 2)]]
  * [[http://binsh.ru/2008/12/22/bash-pitfalls-part03.html|Частые ошибки программирования на Bash (часть 3)]]
  * [[http://binsh.ru/2008/12/24/bash-pitfalls-part04.html|Частые ошибки программирования на Bash (часть 4)]]
  * [[http://binsh.ru/2008/12/29/bash-pitfalls-part05.html|Частые ошибки программирования на Bash (часть 5)]]
  * [[https://ru.wikipedia.org/wiki/Bash|https://ru.wikipedia.org/wiki/Bash]]
  * [[:system:shell:bash:перенаправление_вывода|Перенаправление вывода]]
  * [[http://bappoy.pp.ru/2008/12/22/bash-pitfalls-part03.html|http://bappoy.pp.ru/2008/12/22/bash-pitfalls-part03.html]]
  * [[http://www.opennet.ru/docs/RUS/bash_scripting_guide/|Advanced Bash-Scripting Guide]]
  * [[http://habrahabr.ru/post/151771/|http://habrahabr.ru/post/151771/]]
  * [[http://linux.yaroslavl.ru/docs/conf/gnu-util/bash/bash.html|Особенности работы оболочки bash]]
  * [[http://www.opennet.ru/docs/RUS/bash_scripting_guide/|Искусство программирования на языке сценариев командной оболочки]]
  * [[http://eddnet.org/?tag=bash|http://eddnet.org/?tag=bash]]

====== Видео уроки ======

  * [[https://www.youtube.com/watch?v=HwhMyGUGxZ0&list=PLLyG9JTjVd9VTEKisukGLJhl8H2YeIN09|SHELL BASH Основы работы в командном процессоре]]
  * [[https://www.youtube.com/watch?v=bk0YBz-VqTo&list=PLRZDRng2SWPggdZOHQJ5iTvp8-UG7OVXD|Удобная работа в Bash]]
  * [[https://www.youtube.com/watch?v=eH8Z9zeywq0&list=PLTXMX1FE5Hj5ZJDt_WMbioFpdWO5SGy8r|Bash Basics]]
  * [[https://www.youtube.com/playlist?list=PLLyG9JTjVd9VTEKisukGLJhl8H2YeIN09|https://www.youtube.com/playlist?list=PLLyG9JTjVd9VTEKisukGLJhl8H2YeIN09]]

===== Применить настройки =====

  * source ~/.bashrc

==== Примеры конфигурационных файлов ====

  * [[http://www.opennet.ru/docs/RUS/bash_scripting_guide/a15124.html|http://www.opennet.ru/docs/RUS/bash_scripting_guide/a15124.html]]
  * [[http://welinux.ru/post/7293/|http://welinux.ru/post/7293/]]
  * [[http://rus-linux.net/nlib.php?name=/MyLDP/BOOKS/Bash-Guide-1.12-ru/bash-guide-03-1.html|http://rus-linux.net/nlib.php?name=/MyLDP/BOOKS/Bash-Guide-1.12-ru/bash-guide-03-1.html]]
  * [[http://younglinux.info/book/export/html/265|http://younglinux.info/book/export/html/265]]

===== Примеры =====

==== Замена текста в файлах с возможностью рекурсии ====
<code>

find ./ -type f -exec sed -i 's/CHARSET=utf8/CHARSET=cp1251/g' {} \;

</code>

==== Прогрессбар ====

  * [[http://linsovet.org.ua/howto-bash-script-status|http://linsovet.org.ua/howto-bash-script-status]]

==== Видео уроки ====

=== RUS ===

  * [[https://www.youtube.com/playlist?list=PLLyG9JTjVd9VTEKisukGLJhl8H2YeIN09|ОСНОВЫ РАБОТЫ В КОМАНДНОМ ПРОЦЕССОРЕ SHELL BASH]]
  *  [[https://www.youtube.com/playlist?list=PLRZDRng2SWPggdZOHQJ5iTvp8-UG7OVXD|Linux. Bash]]
      * [[https://www.youtube.com/playlist?list=PLRZDRng2SWPinFcla9GNA5e0zv0YK75-z|Linux. Filesystems]]

=== ENG ===

  * [[https://www.youtube.com/playlist?list=PLtK75qxsQaMIlFCcFZpTBLnaCJ0I0uiaY|https://www.youtube.com/playlist?list=PLtK75qxsQaMIlFCcFZpTBLnaCJ0I0uiaY]]
  * [[https://www.youtube.com/playlist?list=PLtK75qxsQaMLZSo7KL-PmiRarU7hrpnwK|https://www.youtube.com/playlist?list=PLtK75qxsQaMLZSo7KL-PmiRarU7hrpnwK]]

