ืื ืืฆืืช ืืช ืืืฃ ืืื ืืืืคืืฉ, ืื ืจืื ืฉืืชื ืื ืกื ืืคืชืืจ ืืขืื ืืืฉืื ืืืคืขืืช bash.
ืืืื ืกืืืืช ื-bash ืฉืื ืื ืืืืืจื ืืฉืชื ื ืกืืืื ืืืชื ืื ืืืื ืืื. ืืืชืื ืฉื ืชืงืขืช ืืฉืื ืืงืืฆื ืืชืืื ืื ืคืจืืคืืืื ืฉืื ืื ืฉื bash ืื ืืื ืืงืืฆืื ืืืงืจืื ืขื ืฉืื ืขืื.
ืืื ืืงืจื, ืืืืจื ืฉื ืืขืจื ืื ืืื ืืคืจืืก ืืช ืืืื ืืชืืืช ืืืืฉ ืืฆืืจื ืคืฉืืื ืืื ืืืคืฉืจ ืืื ืฉืชืืื ืืืชืืืื ืขื ืืขืืืช.
ืชืจืฉืื
ืชืจืฉืื ืืจืืื ืื ืืกืื ืืช ืื ืืชืืืืืื ืืขืช ืืคืขืืช bash.
ืขืืฉืื ืืืื ื ืกืชืื ืืงืจืื ืขื ืื ืืืง.
ืืขืืคืช ืื ืืกื?
ืจืืฉืืช ืขืืื ืืืืืจ ืื ืืชื ืืืขืืคืช ืืืชืืืจืืช ืื ืื.
ืืขืืคืช ืืื ืืกื ืืื ืืืขืืคืช ืืจืืฉืื ื ืฉืืชื ืืืื ืืฉืืชื ื ืื ืก ืืืคืขืื ืืื ืืจืืงืืืืืช. ืืขืืคืช ืืื ืืกื ืืื ื ืืืจืฉืช ืฉื ืืฉืชืืฉ ืืกืืกืื. ืืชื ืืืื ืืืืฅ ืืช ืืขืืคืช ืืื ืืกื ืืืชืืื ืขื ืืื ืืืกืคืช ืืื --login
ืืฉืงืืจืืื ืื bash
, ืืืืืื:
bash --ืื ืืกื
ืืขืืคืช ืืื ืืกื ืืืืืจื ืืช ืกืืืืช ืืืกืืก ืืืฉืจ ืืชื ืืคืขืื ืืจืืฉืื ื ืืช ืืขืืคืช bash.
ืืื ืืจืืงืืืื?
ืืืืจ ืืื ืืชื ืงืืืข ืื ืืืขืืคืช ืืื ืืจืืงืืืืืช ืื ืื.
ื ืืชื ืืืืืง ืืืช ืขื ืืื ื ืืืืืช ืืืฉืชื ื PS1
(ืื ืืชืงืื ืืช ืคืื ืงืฆืืืช ืงืื ืืคืงืืื):
if [ "${PS1-}" ]; ืืื echo interactive else echo non-interactive fi
ืื ืืจืืืช ืื ืืืคืฉืจืืช ืืืืืจืช -i
, ืืืืฆืขืืช ืืฉืชื ื ืืงืฃ ืืืืื -
ื-bash, ืืืฉื:
$echo$-
ืื ืืฉ ืกืื ืืคืื i
, ืื ืืงืืืคื ืืื ืืจืืงืืืืืช.
ืืืขืืคืช ืืื ืืกื?
ืื ืืชื ื ืืฆื ืืืขืืคืช ืื ืืกื, ืื bash ืืืคืฉ ืืช ืืงืืืฅ /etc/profile
ืืคืืขื ืื ืืื ืงืืื.
ืืืืจ ืืื ืืืคืฉ ืื ืืื ืืฉืืืฉืช ืืงืืฆืื ืืืื ืืกืืจ ืืื:
~/.bash_profile ~/.bash_login ~/.profile
ืืืฉืจ ืืื ืืืฆื ืืื, ืืื ืืชืืื ืืืชื ืืืืื ืขื ืืืืจืื.
ืืืขืืคืช ืืื ืืจืืงืืืืืช?
ืื ืืชื ื ืืฆื ืืืขืืคืช ืฉืืื ื ืืืืืจืช, ืืื ืื ืืื ืฉืืืจ ืืืืช ืืืขืืคืช ืื ืืกื, ืืกืืืื ืืืืืจืช ืืชืขืืืจ ืืืจืืฉื.
ืืืงืจื ืื, ืฉื ื ืืงืืฆืื ืืืืื ืืืืฆืขืื ืืคื ืืกืืจ, ืื ืื ืงืืืืื:
/etc/bash.bashrc ~/.bashrc
ืืื ืืคืฉืจืืช?
ืื ืืื ื ื ืืฆื ืืืขืืคืช ืื ืืกื ืื ืืืขืืคืช ืืื ืืจืืงืืืืืช, ืืกืืืื ืฉืื ืืื ืชืืื ืจืืงื. ืื ืืืจื ืืืืืื ืจื (ืจืื ืืืื ืขื ืขืืืืืช cron).
ืืืงืจื ืื bash ืืกืชืื ืขื ืืืฉืชื ื BASH_ENV
ืืกืืืื ืฉืื ืืืืฆืจ ืืช ืืงืืืฅ ืืืชืืื ืฉืฆืืื ืฉื.
ืงืฉืืื ื ืคืืฆืื ืืืืื ืืฆืืข
ืืฉืจืืช ืงืจืื
95% ืืืืื ืฉืื ื ืื ืคื ืืืืื ืืืคืขืื ืฉื bash ืื ืืืื ืฉืขืืืืช ื-cron ืื ืคืืขืืช ืืืฆืืคื.
ืืืฉืืื ืืืจืืจื ืืื ืขืืื ืืฆืืื ืืฉืื ื ืืคืขืื ืืืชื ืืฉืืจืช ืืคืงืืื, ืืื ื ืืฉื ืืฉืื ื ืืคืขืื ืืืชื ื-crontab.
ืืื ืฉืชื ืกืืืืช:
- ืืฉืจืืช Cron ืืื ื ืืื ืืจืืงืืืืืืช.
- ืฉืื ืืื ืกืงืจืืคืืื ืฉื ืฉืืจืช ืืคืงืืื, ืขืืืืืช cron ืื ืืืจืฉืืช ืืช ืกืืืืช ืืืขืืคืช.
ืืืจื ืืื ืื ืชืืืื ืื ืืืคืช ืื ืฉืกืงืจืืคื ืืขืืคืช ืืื ื ืืื ืืจืืงืืืื ืืืืืื ืฉืืกืืืื ืืืจืฉืช ืืืืขืืคืช ืืืื ืืจืืงืืืืืช. ืื ืืืืจ ืฉืืื PATH
ะธ alias
ืืืืืจ ืืคื ืฉืืืืช ืืฆืคื.
ืื ืืกืืื ืฉืืขืชืื ืงืจืืืืช ืืฉ ืฆืืจื ืืืืืืจ ืกืคืฆืืคื PATH
ืขืืืจ ืืฉืืืช cron ืืื ืืื:
* * * * * PATH=${PATH}:/path/to/my/program/folder myprogram
ืชืกืจืืืื ืงืืจืืื ืื ืืื
ืืขืื ื ืคืืฆื ื ืืกืคืช ืืื ืืืฉืจ ืกืงืจืืคืืื ืืืืืจืื ืืืขืืช ืืืชืงืฉืจ ืืื ืืฉื ื. ืืืืืื, /etc/profile
ืืืฉื ื ~/.bashrc
.
ืื ืงืืจื ืืืจื ืืื ืืฉืืืฉืื ื ืืกื ืืชืงื ืฉืืืื ืืืฉืื ืื ืจืื ืฉืืื ืขืืื. ืืืจืื ืืฆืขืจ, ืืืฉืจ ืืชื ืฆืจืื ืืืคืจืื ืืื ืกืืื ืืคืขืืืช ืฉืื ืื, ืฆืฆืืช ืืขืืืช ืืืฉืืช.
ืชืืื ืช 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
ืกืงืจืืคื ืคืฉืื ืืืืฆืข ืืื ืืงื (ื /root/ascript
):
$ crontab -l
$ cat /var/log/script.log
ืืงืืจ: www.habr.com