แแฃ แแฅแแแ แแแแแแ แแก แแแแ แแ แซแแแแแจแ, แแฅแแแ แแแแแ แชแแแแแแ แแแแแญแ แแ แแแ แแแแฃแแ แแ แแแแแแ แแแจแแก แแแจแแแแแกแแแ แแแแแแจแแ แแแแ.
แจแแกแแซแแแ, แแฅแแแแ bash แแแ แแแ แแ แแแแแแก แแแ แแแแก แชแแแแแก แแ แแฅแแแ แแ แแแกแแแ แ แแขแแ. แแฅแแแ แจแแแซแแแแ แแแแญแแ แแแ แ แแฆแแช แกแฎแแแแแกแฎแแ bash boot แคแแแแจแ แแ แแ แแคแแแจแ แแ แงแแแแ แคแแแแจแ แจแแแแฎแแแแแ, แกแแแแ แแก แแ แแแฃแจแแแแแแ.
แแแแแกแแแแ แจแแแแฎแแแแแจแ, แแ แฉแแแแฌแแ แแก แแแแแแแ แแแจแแก แแแฌแงแแแแก แแ แแชแแแฃแ แแก แแแแแแแ แ แแช แจแแแซแแแแ แแแ แขแแแแ, แ แแแ แจแแซแแแ แแ แแแแแแแแแก แแแแแแ แแแ.
แแแแแ แแแ
แแก แแแแแ แแแ แแฏแแแแแก แงแแแแ แแ แแชแแกแก bash-แแก แแแจแแแแแกแแก.
แแฎแแ แแแแแ แฃแคแ แ แแฎแแแก แแแแฎแแแแ แแแแแแฃแ แแแฌแแแก.
แจแแกแแแ Shell?
แฏแแ แฃแแแ แแแ แฉแแแ แจแแกแแแแก แญแฃแ แแแจแ แฎแแ แ แแฃ แแ แ.
แจแแกแแแแก แแแ แกแ แแ แแก แแแ แแแแ แแแ แกแ, แ แแแแแกแแช แจแแแแฎแแ แ แแแขแแ แแฅแขแแฃแแ แกแแกแแแกแแแแก แจแแกแแแแกแแก. แจแแกแแแแก แแแ แกแ แแ แกแแญแแ แแแแก แแแแฎแแแ แแแแแก แกแแฎแแแก แแ แแแ แแแก. แแฅแแแ แจแแแแซแแแแ แแแซแฃแแแ แจแแกแแแแก แแแ แกแ แแแแฌแงแแก แแ แแจแแก แแแแแขแแแแ --login
แ แแชแ แแแ แแแแก bash
, แแแแแแแแแ:
bash --แจแแกแแแ
แจแแกแแแแก แแแ แกแ แแแแแแก แกแแแแแแกแ แแแ แแแแก, แ แแแแกแแช แแแ แแแแแ แแแแฌแงแแแ bash shell-แก.
แแแขแแ แแฅแขแแฃแแ?
แจแแแแแ แแฅแแแ แแแแกแแแฆแแ แแแ แแ แแก แแฃ แแ แ แญแฃแ แแ แแแขแแ แแฅแขแแฃแแ แแฃ แแ แ.
แแก แจแแแซแแแแ แจแแแแฌแแแแก แชแแแแแแก แแ แกแแแแแแ PS1
(แแก แแงแแแแแก แแ แซแแแแแแก แจแแงแแแแแก แคแฃแแฅแชแแแก):
แแฃ ["${PS1-}"]; แจแแแแแ แแฎแ แแแขแแ แแฅแขแแฃแแ แกแฎแแ แแฅแ แแ แแแแขแแ แแฅแขแแฃแแ แคแ
แแ แแแฎแแ, แแแงแแแแแฃแแแ แแฃ แแ แ แแก แแแ แแแแขแ -i
แกแแแชแแแแฃแ แ แแแคแแกแแก แชแแแแแแก แแแแแงแแแแแแ -
แแแจแจแ, แแแแแแแแแ:
$echo$-
แแฃ แแแแแกแแแแแจแ แแ แแก แกแแแแแแ i
, แแแจแแ แญแฃแ แแ แแ แแก แแแขแแ แแฅแขแแฃแแ.
แจแแกแแแแก แญแฃแ แแแจแ?
แแฃ แแฅแแแ แฎแแ แ แจแแกแแแแก แญแฃแ แแแจแ, แแแจแแ bash แแซแแแก แคแแแแก /etc/profile
แแ แแฃแจแแแแก แแฃ แแก แแ แกแแแแแก.
แจแแแแแ แแซแแแก แแ แกแแแ แคแแแแแแแ แ แแแแแแแแก แจแแแแแแ แแแแแแแแแแ แแแแ:
~/.bash_profile ~/.bash_login ~/.profile
แ แแแแกแแช แแก แแแแแแก แแ แแก, แแฌแงแแแก แแแก แแ แแแแแขแแแแแก แกแฎแแแแก.
แแแขแแ แแฅแขแแฃแ แแแ แกแจแ?
แแฃ แแฅแแแ แแแงแแคแแแแ แแ แ แจแแกแแแแก แแแ แกแจแ, แแแ แแฃแแแแแ, แ แแ แฃแแแ แแงแแแแ แจแแกแแแแก แญแฃแ แแแจแ, แแแ แแแ แแแแคแแแฃแ แแ แแแฃแแแ แแ แแแแแแแแ แแแแแ แแแแฆแแแ.
แแ แจแแแแฎแแแแแจแ, แจแแแแแแ แแ แ แคแแแแ แจแแกแ แฃแแแแฃแแแ แแแแแแแแแแ แแแแ, แแฃ แแกแแแ แแ แกแแแแแก:
/etc/bash.bashrc ~/.bashrc
แแแ แแแแขแ แแ แแ แแก?
แแฃ แแฅแแแ แแ แฎแแ แ แจแแกแแแแก แแ แแแขแแ แแฅแขแแฃแ แแแ แกแจแ, แแแจแแ แแฅแแแแ แแแ แแแ แแแแแแแแแ แชแแ แแแแ แแฅแแแแ. แแก แแฌแแแแก แแแแ แแแแแแฃแแแแแก (แแฎแแแแ แฅแแแแแ cron แกแแแฃแจแแแแแแก แจแแกแแฎแแ).
แแ แจแแแแฎแแแแแจแ bash แฃแงแฃแ แแแก แชแแแแแก BASH_ENV
แแฅแแแแ แแแ แแแ แแ แฅแแแแก แแฅ แแแแแแแแฃแ แจแแกแแแแแแก แคแแแแก.
แกแแแ แแ แกแแ แแฃแแแแแ แแ แชแแ แแก แฌแแกแแแ
แแ แแแแก แกแแแฃแจแแแแแ
แแ แแแก 95% แแ แแแกแฌแแ แแ bash startup-แก, แแก แแแแขแแ แฎแแแแ, แ แแ cron แกแแแฃแจแแ แแ แแฃแจแแแแก แแกแ, แ แแแแ แช แแแกแแแแแแแแแ.
แแก แแแฌแงแแแแแแ แแแแชแแแ แแแ แแแ แแฃแจแแแแก, แ แแชแ แแแก แแ แซแแแแแแก แกแขแ แแฅแแแแ แแแขแแ แแ, แแแแ แแ แแแ แฎแแ แฎแแแแ, แ แแชแ แแแก แแ แแแขแแแจแ แแแขแแ แแ.
แแฅ แแ แ แแแแแแ:
- Cron แกแแแฃแจแแแแแ แแ แแ แแก แแแขแแ แแฅแขแแฃแแ.
- แแ แซแแแแแแก แฎแแแแก แกแแ แแแขแแแแกแแแแ แแแแกแฎแแแแแแแ, cron แกแแแฃแจแแแแแ แแ แแแแแแแแ แแแแแ แแแ แกแแก แแแ แแแแก.
แ แแแแ แช แฌแแกแ, แแฅแแแ แแแ แจแแแแฉแแแแ แแ แแ แแแแขแแ แแกแแแ, แ แแ shell แกแแ แแแขแ แแ แแ แแก แแแขแแ แแฅแขแแฃแแ, แ แแแแแ แแแ แแแ แแแแแแแแ แแแแแ แแฆแแแก แแแขแแ แแฅแขแแฃแแ แแแ แกแแกแแแ. แแก แแแจแแแแก, แ แแ แงแแแแแคแแ แ PATH
ะธ alias
แแแแคแแแฃแ แแ แแแฃแแแ แแกแ, แ แแแแ แช แแฅแแแ แแแแแแ.
แแแแขแแ แฎแจแแ แแ แกแแญแแ แแ แแแแแ แแขแฃแแแก แแแแแแแ PATH
Cron แแแแชแแแแกแแแแก, แ แแแแ แแชแแ แแฅ:
* * * * * PATH=${PATH}:/path/to/my/program/folder myprogram
แกแแ แแแขแแแ แแ แแแแแแแก แแซแแฎแแแ
แแแแแ แแ แแ แแแแ แชแแแแแฃแแ แแ แแแแแแแ, แ แแแแกแแช แกแแ แแแขแแแ แจแแชแแแแแ แแ แแก แแแแคแแแฃแ แแ แแแฃแแ แแ แแแแแแแแก แแแกแแ แแแแ. แฒแแแแแแแแ, /etc/profile
แแแแแ แแแแก ~/.bashrc
.
แแก แฉแแแฃแแแแ แแ แฎแแแแ แแแจแแ, แ แแแแกแแช แแแแแ แชแแแแแแแ แจแแชแแแแแก แแแแแกแฌแแ แแแแก แแ แแแแฅแแก แงแแแแแคแแ แ แแฃแจแแแแแ. แกแแแฌแฃแฎแแ แแ, แ แแแแกแแช แแ แกแฎแแแแแกแฎแแ แขแแแแก แกแแกแแแแแก แแแแแงแแคแ แแญแแ แแแแแ, แแฎแแแ แแ แแแแแแแแ แฌแแ แแแแฅแแแแแ.
Sandboxed Docker แกแฃแ แแแ
แญแฃแ แแแก แแแจแแแแแก แแฅแกแแแ แแแแแขแแแแกแแแแก แแ แจแแแฅแแแแ Docker แกแฃแ แแแ, แ แแแแแแช แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก แฃแกแแคแ แแฎแ แแแ แแแแจแ แแแ แกแแก แแแแแ แแแแกแแแแก.
แแแจแแแแ:
$ docker run -n bs -d imiell/bash_startup
$ docker exec -ti bs bash
Dockerfile แแแแแแ แแแแก
แจแแกแแแแก แแซแฃแแแแ แแ แจแแกแแแแก แแแ แกแแก แกแแแฃแแแชแแ:
$ bash --login
แชแแแแแแแแก แแแแ แแแแก แจแแกแแแแฌแแแแแแ BASH_ENV
:
$ env | grep BASH_ENV
แแแแแ แแแแกแแแแก crontab
แแแ แขแแแ แกแแ แแแขแ แจแแกแ แฃแแแแแ แงแแแแ แฌแฃแแจแ (in /root/ascript
):
$ crontab -l
$ cat /var/log/script.log
แฌแงแแ แ: www.habr.com