рддрдкрд╢реАрд▓рд╡рд╛рд░ рдмреЕрд╢ рдЪрд╛рд▓реВ рдЖрд╣реЗ

рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рдкреГрд╖реНрда рд╢реЛрдзрд╛рдд рд╕рд╛рдкрдбрд▓реЗ, рддрд░ рддреБрдореНрд╣реА рдХрджрд╛рдЪрд┐рдд рдЪрд╛рд▓рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдмреЕрд╢рд╕рд╣ рдХрд╛рд╣реА рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рдд рдЖрд╣рд╛рдд.

рдХрджрд╛рдЪрд┐рдд рддреБрдордЪреЗ рдмреЕрд╢ рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рдХрд░рдд рдирд╕реЗрд▓ рдЖрдгрд┐ рдХрд╛ рддреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рдордЬрдд рдирд╛рд╣реА. рддреБрдореНрд╣реА рдХрджрд╛рдЪрд┐рдд рд╡рд┐рд╡рд┐рдз рдмреЕрд╢ рдмреВрдЯ рдлрд╛рдЗрд▓реНрд╕ рдХрд┐рдВрд╡рд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓реНрд╕рдордзреНрдпреЗ рдХрд┐рдВрд╡рд╛ рд╕рд░реНрд╡ рдлрд╛рдЗрд▓реНрд╕ рдпрд╛рджреГрдЪреНрдЫрд┐рдХрдкрдгреЗ рдХрд╛рдо рдХрд░реЗрдкрд░реНрдпрдВрдд рдХрд╛рд╣реАрддрд░реА рдЕрдбрдХрд▓реЗ рдЕрд╕реЗрд▓.

рдХреЛрдгрддреНрдпрд╛рд╣реА рдкрд░рд┐рд╕реНрдерд┐рддреАрдд, рдпрд╛ рдиреЛрдЯрдЪрд╛ рдореБрджреНрджрд╛ рдореНрд╣рдгрдЬреЗ рдмреЕрд╢ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдЪреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢рдХреНрдп рддрд┐рддрдХреНрдпрд╛ рд╕реЛрдкреНрдпрд╛ рдкрджреНрдзрддреАрдиреЗ рдорд╛рдВрдбрдгреЗ рдЬреЗрдгреЗрдХрд░реБрди рддреБрдореНрд╣реА рд╕рдорд╕реНрдпрд╛рдВрдирд╛ рд╕рд╛рдореЛрд░реЗ рдЬрд╛рдК рд╢рдХрддрд╛.

рдЖрдХреГрддреА

рд╣рд╛ рдлреНрд▓реЛрдЪрд╛рд░реНрдЯ рдмреЕрд╢ рдЪрд╛рд▓рд╡рддрд╛рдирд╛ рд╕рд░реНрд╡ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдВрдЪрд╛ рд╕рд╛рд░рд╛рдВрд╢ рджреЗрддреЛ.

рддрдкрд╢реАрд▓рд╡рд╛рд░ рдмреЕрд╢ рдЪрд╛рд▓реВ рдЖрд╣реЗ

рдЖрддрд╛ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдЬрд╡рд│реВрди рдкрд╛рд╣реВ.

рд▓реЙрдЧ рдЗрди рд╢реЗрд▓?

рдкреНрд░рдердо рдЖрдкрдг рд▓реЙрдЧрд┐рди рд╢реЗрд▓рдордзреНрдпреЗ рдЖрд╣рд╛рдд рдХреА рдирд╛рд╣реА рд╣реЗ рдирд┐рд╡рдбрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рддреБрдореНрд╣реА рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡реНрд╣ рд╕реЗрд╢рдирд╕рд╛рдареА рд▓реЙрдЧ рдЗрди рдХрд░рддрд╛ рддреЗрд╡реНрд╣рд╛ рд▓реЙрдЧрд┐рди рд╢реЗрд▓ рд╣реЗ рдкрд╣рд┐рд▓реЗ рд╢реЗрд▓ рдЕрд╕рддреЗ. рд▓реЙрдЧрд┐рди рд╢реЗрд▓рд▓рд╛ рд╡рд╛рдкрд░рдХрд░реНрддрд╛рдирд╛рд╡ рдЖрдгрд┐ рдкрд╛рд╕рд╡рд░реНрдбрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА. рддреБрдореНрд╣реА рдзреНрд╡рдЬ рдЬреЛрдбреВрди рд▓реЙрдЧрд┐рди рд╢реЗрд▓ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рд╕ рднрд╛рдЧ рдкрд╛рдбреВ рд╢рдХрддрд╛ --login рдХреЙрд▓ рдХреЗрд▓реНрдпрд╛рд╡рд░ bash, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде:

bash --рд▓реЙрдЧрд┐рди

рддреБрдореНрд╣реА рдкреНрд░рдердо рдмреЕрд╢ рд╢реЗрд▓ рд╕реБрд░реВ рдХрд░рддрд╛ рддреЗрд╡реНрд╣рд╛ рд▓реЙрдЧрд┐рди рд╢реЗрд▓ рдмреЗрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗрдЯ рдХрд░рддреЗ.

рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджреА?

рдордЧ рдЖрдкрдг рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рд╛ рдХреА рд╢реЗрд▓ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджреА рдЖрд╣реЗ рдХреА рдирд╛рд╣реА.

рд╣реЗ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдЪреНрдпрд╛ рдЙрдкрд╕реНрдерд┐рддреАрджреНрд╡рд╛рд░реЗ рддрдкрд╛рд╕рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ PS1 (рддреЗ рдХрдорд╛рдВрдб рдЗрдирдкреБрдЯ рдлрдВрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ):

рдЬрд░ [ "${PS1-}" ]; рдирдВрддрд░ echo рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡реНрд╣ рдирд╛рд╣реАрддрд░ echo рдиреЙрди-рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡реНрд╣ fi

рдХрд┐рдВрд╡рд╛ рдкрд░реНрдпрд╛рдп рд╕реЗрдЯ рдХреЗрд▓рд╛ рдЖрд╣реЗ рдХрд╛ рддреЗ рдкрд╣рд╛ -i, рд╡рд┐рд╢реЗрд╖ рд╣рд╛рдпрдлрди рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рд╡рд╛рдкрд░реВрди - рдмреЕрд╢ рдордзреНрдпреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде:

$echo$-

рдЖрдЙрдЯрдкреБрдЯрдордзреНрдпреЗ рдЪрд┐рдиреНрд╣ рдЕрд╕рд▓реНрдпрд╛рд╕ i, рдирдВрддрд░ рд╢реЗрд▓ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджреА рдЖрд╣реЗ.

рд▓реЙрдЧрд┐рди рд╢реЗрд▓рдордзреНрдпреЗ?

рддреБрдореНрд╣реА рд▓реЙрдЧрд┐рди рд╢реЗрд▓рдордзреНрдпреЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рдмреЕрд╢ рдлрд╛рдЗрд▓ рд╢реЛрдзрддреЗ /etc/profile рдЖрдгрд┐ рддреЗ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЕрд╕рд▓реНрдпрд╛рд╕ рдЪрд╛рд▓рддреЗ.

рдирдВрддрд░ рдЦрд╛рд▓реАрд▓ рдХреНрд░рдорд╛рдиреЗ рдпрд╛ рддреАрдирдкреИрдХреА рдХреЛрдгрддреНрдпрд╛рд╣реА рдлрд╛рдпрд▓реА рд╢реЛрдзрд╛:

~/.bash_profile ~/.bash_login ~/.profile

рдЬреЗрд╡реНрд╣рд╛ рддреНрдпрд╛рд▓рд╛ рдПрдХ рд╕рд╛рдкрдбрддреЛ, рддреЗрд╡реНрд╣рд╛ рддреЛ рддреЗ рд╕реБрд░реВ рдХрд░рддреЛ рдЖрдгрд┐ рдЗрддрд░рд╛рдВрдирд╛ рд╕реЛрдбреВрди рджреЗрддреЛ.

рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджреА рд╢реЗрд▓рдордзреНрдпреЗ?

рдЬрд░ рддреБрдореНрд╣реА рдиреЙрди-рд▓реЙрдЧрд┐рди рд╢реЗрд▓рдордзреНрдпреЗ рдЕрд╕рд╛рд▓, рддрд░ рдЕрд╕реЗ рдЧреГрд╣реАрдд рдзрд░рд▓реЗ рдЬрд╛рддреЗ рдХреА рддреБрдореНрд╣реА рдЖрдзреАрдЪ рд▓реЙрдЧрд┐рди рд╢реЗрд▓рдордзреНрдпреЗ рдЖрд╣рд╛рдд, рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рд╡рд╛рд░рд╕рд╛ рдорд┐рд│реЗрд▓.

рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдЦрд╛рд▓реАрд▓ рджреЛрди рдлрд╛рдЗрд▓реНрд╕ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рдХреНрд░рдорд╛рдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд:

/etc/bash.bashrc ~/.bashrc

рдкрд░реНрдпрд╛рдп рдирд╛рд╣реА?

рддреБрдореНрд╣реА рдПрдХрддрд░ рд▓реЙрдЧрд┐рди рд╢реЗрд▓ рдХрд┐рдВрд╡рд╛ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджреА рд╢реЗрд▓рдордзреНрдпреЗ рдирд╕рд▓реНрдпрд╛рд╕, рддреБрдордЪреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдЦрд░реЛрдЦрд░рдЪ рд░рд┐рдХрд╛рдореЗ рдЕрд╕реЗрд▓. рдпрд╛рдореБрд│реЗ рдЦреВрдк рдЧреЛрдВрдзрд│ рд╣реЛрддреЛ (рдХреНрд░реЙрди рдЬреЙрдмрдмрджреНрджрд▓ рдЦрд╛рд▓реА рдкрд╣рд╛).

рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд рдмреЕрд╢ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдХрдбреЗ рдкрд╛рд╣рддреЛ BASH_ENV рддреБрдордЪреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдЖрдгрд┐ рддреЗрдереЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реА рд╕рдВрдмрдВрдзрд┐рдд рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХрд░рддреЗ.

рд╕рд╛рдорд╛рдиреНрдп рдЕрдбрдЪрдгреА рдЖрдгрд┐ рдЕрдВрдЧрдареНрдпрд╛рдЪреЗ рдирд┐рдпрдо

рдХреНрд░реЙрди рдиреЛрдХрд░реНтАНрдпрд╛

95% рд╡реЗрд│рд╛ рдореА рдмреЕрд╢ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдбреАрдмрдЧ рдХрд░рддреЛ рдХрд╛рд░рдг рдХреНрд░реЙрди рдЬреЙрдм рдЕрдкреЗрдХреНрд╖реЗрдкреНрд░рдорд╛рдгреЗ рдЪрд╛рд▓рдд рдирд╛рд╣реА.

рд╣реЗ рдЙрджреНрдЧрд╛рд░ рдХрд╛рд░реНрдп рдЬреЗрд╡реНрд╣рд╛ рдореА рдХрдорд╛рдВрдб рд▓рд╛рдЗрдирд╡рд░ рдЪрд╛рд▓рд╡рддреЛ рддреЗрд╡реНрд╣рд╛ рдЪрд╛рдВрдЧрд▓реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ, рдкрд░рдВрддреБ рдЬреЗрд╡реНрд╣рд╛ рдореА рддреЗ рдХреНрд░реЙрдиреНрдЯреЕрдмрдордзреНрдпреЗ рдЪрд╛рд▓рд╡рддреЗ рддреЗрд╡реНрд╣рд╛ рдЕрдпрд╢рд╕реНрд╡реА рд╣реЛрддреЗ.

рддреЛ рдЖрд╣реЗ рджреЛрди рдХрд╛рд░рдгреЗ:

  • рдХреНрд░реЙрди рдЬреЙрдмреНрд╕ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджреА рдирд╕рддрд╛рдд.
  • рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕рдЪреНрдпрд╛ рд╡рд┐рдкрд░реАрдд, рдХреНрд░реЙрди рдЬреЙрдмреНрд╕ рд╢реЗрд▓ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдЪрд╛ рд╡рд╛рд░рд╕рд╛ рдШреЗрдд рдирд╛рд╣реАрдд.

рд╕рд╛рдорд╛рдиреНрдпрдд: рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджреА рдирд╕рд▓реНрдпрд╛рдЪреНрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдХрд┐рдВрд╡рд╛ рдХрд╛рд│рдЬреА рдШреЗрдгрд╛рд░ рдирд╛рд╣реА рдХрд╛рд░рдг рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджреА рд╢реЗрд▓рдордзреВрди рд╡рд╛рд░рд╕рд╛ рдШреЗрддреЗ. рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдХреА рд╕рд░реНрд╡рдХрд╛рд╣реА PATH ╨╕ alias рддреБрдордЪреНрдпрд╛ рдЕрдкреЗрдХреНрд╖реЗрдкреНрд░рдорд╛рдгреЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗ.

рдореНрд╣рдгреВрдирдЪ рдЕрдиреЗрдХрджрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рддреЗ PATH рдХреНрд░реЙрди рдХрд╛рд░реНрдпрд╛рд╕рд╛рдареА рдпреЗрдереЗ рдЬрд╕реЗ:

* * * * * PATH=${PATH}:/path/to/my/program/folder myprogram

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХрдореЗрдХрд╛рдВрдирд╛ рдХреЙрд▓ рдХрд░рдд рдЖрд╣реЗрдд

рджреБрд╕рд░реА рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╕реНрдпрд╛ рдореНрд╣рдгрдЬреЗ рдЬреЗрд╡реНрд╣рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХрдореЗрдХрд╛рдВрдирд╛ рдХреЙрд▓ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЪреБрдХреВрди рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, /etc/profile рд▓рд╛ рдЖрд╡рд╛рд╣рди рдХрд░рддреЗ ~/.bashrc.

рд╣реЗ рд╕рд╣рд╕рд╛ рдШрдбрддреЗ рдЬреЗрд╡реНрд╣рд╛ рдПрдЦрд╛рджреНрдпрд╛рдиреЗ рдХрд╛рд╣реА рддреНрд░реБрдЯреА рджреВрд░ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛ рдЖрдгрд┐ рд╕рд░реНрд╡рдХрд╛рд╣реА рдХрд╛рд░реНрдп рдХрд░рдд рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рджрд┐рд╕рддреЗ. рджреБрд░реНрджреИрд╡рд╛рдиреЗ, рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдпрд╛ рд╡рд┐рд╡рд┐рдз рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рд╕рддреНрд░рд╛рдВрдирд╛ рд╡реЗрдЧрд│реЗ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕рддреЗ, рддреЗрд╡реНрд╣рд╛ рдирд╡реАрди рд╕рдорд╕реНрдпрд╛ рдЙрджреНрднрд╡рддрд╛рдд.

рд╕рдБрдбрдмреЙрдХреНрд╕ рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛

рд╢реЗрд▓ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдореА рдПрдХ рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХреЗрд▓реА рдЬреА рд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рд╢реЗрд▓ рдЪрд╛рд▓рд╡рддрд╛рдирд╛ рдбреАрдмрдЧ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реА рдЬрд╛рдК рд╢рдХрддреЗ.

рд▓рд╛рдБрдЪ:

$ docker run -n bs -d imiell/bash_startup
$ docker exec -ti bs bash

рдбреЙрдХрд░рдлрд╛рдЗрд▓ рд╕реНрдерд┐рдд рдЖрд╣реЗ рдпреЗрдереЗ.

рд╕рдХреНрддреАрдиреЗ рд▓реЙрдЧрд┐рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рд▓реЙрдЧрд┐рди рд╢реЗрд▓рдЪреЗ рдЕрдиреБрдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА:

$ bash --login

рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдЪрд╛ рд╕рдВрдЪ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА BASH_ENV:

$ env | grep BASH_ENV

рдбреАрдмрдЧрд┐рдВрдЧрд╕рд╛рдареА crontab рдкреНрд░рддреНрдпреЗрдХ рдорд┐рдирд┐рдЯрд╛рд▓рд╛ рдПрдХ рд╕рд╛рдзреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реА рдЬрд╛рдИрд▓ (рдордзреНрдпреЗ /root/ascript):

$ crontab -l
$ cat /var/log/script.log

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛