ืคืœื™ืกื ื“ื™ืง ื‘ืึทืฉ ืื™ืŸ ื“ืขื˜ืึทืœ

ืื•ื™ื‘ ืื™ืจ ื’ืขืคื•ื ืขืŸ ื“ืขื ื‘ืœืึทื˜ ืื™ืŸ ืึท ื–ื•ื›ืŸ, ืื™ืจ ืžื™ืกื˜ืึธืžืข ื˜ืจื™ื™ื ื’ ืฆื• ืกืึธืœื•ื•ืข ืึท ืคึผืจืึธื‘ืœืขื ืžื™ื˜ ืคืœื™ืกื ื“ื™ืง ื‘ืึทืฉ.

ื˜ืึธืžืขืจ ื“ื™ื™ืŸ ื‘ืึทืฉ ืกื•ื•ื™ื•ื•ืข ืื™ื– ื ื™ืฉื˜ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืึท ืกื•ื•ื™ื•ื•ืข ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง ืื•ืŸ ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื•ื•ืึธืก. ืื™ืจ ืงืขืŸ ื”ืึธื‘ืŸ ืกื˜ืึทืง ืขืคึผืขืก ืื™ืŸ ืคืึทืจืฉื™ื“ืŸ ื‘ืึทืฉ ืฉื˜ื™ื•ื•ืœ ื˜ืขืงืขืก ืึธื“ืขืจ ืคึผืจืึธื•ืคื™ื™ืœื– ืึธื“ืขืจ ืึทืœืข ื˜ืขืงืขืก ืื™ืŸ ื˜ืจืึทืค ื‘ื™ื– ืขืก ื’ืขืืจื‘ืขื˜.

ืื™ืŸ ืงื™ื™ืŸ ืคืึทืœ, ื“ื™ ืคื•ื ื˜ ืคื•ืŸ ื“ืขื ืฆืขื˜ืœ ืื™ื– ืฆื• ืฉื˜ืขืœืŸ ื“ื™ ืคึผืจืึธืฆืขื“ื•ืจ ืคึฟืึทืจ ืกื˜ืึทืจื˜ื™ื ื’ ื‘ืึทืฉ ื•ื•ื™ ืคึผืฉื•ื˜ ื•ื•ื™ ืžืขื’ืœืขืš ืึทื–ื•ื™ ืึทื– ืื™ืจ ืงืขื ืขืŸ ื”ืึทื ื“ืœืขืŸ ืžื™ื˜ ืคึผืจืึธื‘ืœืขืžืก.

ื“ื™ืึทื’ืจืึทืžืข

ื“ืขื ืคืœืึธื•ื•ื˜ืฉืึทืจื˜ ืกืึทืžืขืจื™ื™ื–ื™ื– ืึทืœืข ื“ื™ ืคึผืจืึทืกืขืกืึทื– ื•ื•ืขืŸ ืคืœื™ืกื ื“ื™ืง ื‘ืึทืฉ.

ืคืœื™ืกื ื“ื™ืง ื‘ืึทืฉ ืื™ืŸ ื“ืขื˜ืึทืœ

ืื™ืฆื˜ ืœืึธืžื™ืจ ื ืขืžืขืŸ ืึท ื ืขืขื ื˜ืขืจ ืงื•ืง ื‘ื™ื™ึท ื™ืขื“ืขืจ ื˜ื™ื™ืœ.

ืœืึธื’ื™ืŸ ืฉืขืœ?

ืขืจืฉื˜ืขืจ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืงืœื™ื™ึทื‘ืŸ ืฆื™ ืื™ืจ ื–ืขื ื˜ ืื™ืŸ ื“ื™ ืœืึธื’ื™ืŸ ืฉืึธืœ ืึธื“ืขืจ ื ื™ืฉื˜.

ื“ื™ ืœืึธื’ื™ืŸ ืฉืึธืœ ืื™ื– ื“ืขืจ ืขืจืฉื˜ืขืจ ืฉืึธืœ ืื™ืจ ืึทืจื™ื™ึทืŸ ื•ื•ืขืŸ ืื™ืจ ืงืœืึธืฅ ืื™ืŸ ืคึฟืึทืจ ืึท ื™ื ื˜ืขืจืึทืงื˜ื™ื•ื• ืกืขืกื™ืข. ื“ื™ ืœืึธื’ื™ืŸ ืฉืึธืœ ื˜ื•ื˜ ื ื™ืฉื˜ ื“ืึทืจืคืŸ ืึท ื ืืžืขืŸ ืื•ืŸ ืคึผืึทืจืึธืœ. ืื™ืจ ืงืขื ืขืŸ ืฆื•ื•ื™ื ื’ืขืŸ ื“ื™ ืœืึธื’ื™ืŸ ืฉืึธืœ ืฆื• ืึธื ื”ื™ื™ื‘ืŸ ื“ื•ืจืš ืึทื“ื™ื ื’ ืึท ืคืึธืŸ --login ื•ื•ืขืŸ ื’ืขืจื•ืคืŸ bash, ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ:

bash --ืœืึธื’ื™ืŸ

ื“ื™ ืœืึธื’ื™ืŸ ืฉืึธืœ ื‘ืึทืฉื˜ืขื˜ื™ืงื˜ ื“ื™ ื‘ืึทื–ืข ืกื•ื•ื™ื•ื•ืข ื•ื•ืขืŸ ืื™ืจ ืขืจืฉื˜ืขืจ ืึธื ื”ื™ื™ื‘ ื“ื™ ื‘ืึทืฉ ืฉืึธืœ.

ื™ื ื˜ืขืจืึทืงื˜ื™ื•ื•ืข?

ื“ืขืจื ืึธืš ืื™ืจ ื‘ืึทืฉืœื™ืกืŸ ืฆื™ ื“ื™ ืฉืึธืœ ืื™ื– ื™ื ื˜ืขืจืึทืงื˜ื™ื•ื• ืึธื“ืขืจ ื ื™ืฉื˜.

ื“ืขื ืงืขื ืขืŸ ื–ื™ื™ืŸ ืึธืคึผื’ืขืฉื˜ืขืœื˜ ื“ื•ืจืš ื“ืขื ื‘ื™ื™ึทื–ื™ื™ึทืŸ ืคื•ืŸ ื“ื™ ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง PS1 (ืขืก ื™ื ืกื˜ืึธืœื– ื“ื™ ื‘ืึทืคึฟืขืœ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ืคึฟื•ื ืงืฆื™ืข):

ืื•ื™ื‘ ["${PS1-}"]; ื“ืขืžืึธืœื˜ ื•ื•ื™ื“ืขืจืงืึธืœ ื™ื ื˜ืขืจืึทืงื˜ื™ื•ื•ืข ืึทื ื“ืขืจืฉ ื•ื•ื™ื“ืขืจืงืึธืœ ื ื™ื˜-ื™ื ื˜ืขืจืึทืงื˜ื™ื•ื• ืคื™

ืึธื“ืขืจ ื–ืขืŸ ืื•ื™ื‘ ื“ื™ ืึธืคึผืฆื™ืข ืื™ื– ื‘ืึทืฉื˜ื™ืžื˜ -i, ื ื™ืฆืŸ ืึท ืกืคึผืขืฆื™ืขืœ ื‘ื™ืคืขืŸ ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง - ืื™ืŸ ื‘ืึทืฉ, ืœืžืฉืœ:

$ืขืงืึธ$-

ืื•ื™ื‘ ืขืก ืื™ื– ืึท ืกื™ืžื‘ืึธืœ ืื™ืŸ ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ i, ื“ืขืžืึธืœื˜ ื“ื™ ืฉืึธืœ ืื™ื– ื™ื ื˜ืขืจืึทืงื˜ื™ื•ื•.

ืื™ืŸ ื“ื™ ืœืึธื’ื™ืŸ ืฉืึธืœ?

ืื•ื™ื‘ ืื™ืจ ื–ืขื ื˜ ืื™ืŸ ืึท ืœืึธื’ื™ืŸ ืฉืึธืœ, Bash ืงื•ืงื˜ ืคึฟืึทืจ ื“ื™ ื˜ืขืงืข /etc/profile ืื•ืŸ ืœื•ื™ืคื˜ ืื•ื™ื‘ ืขืก ื™ื’ื–ื™ืกืฅ.

ื“ืขืจื ืึธืš ืื™ืจ ื–ื•ื›ื˜ ืคึฟืึทืจ ืงื™ื™ืŸ ืคื•ืŸ ื“ื™ ื“ืจื™ื™ ื˜ืขืงืขืก ืื™ืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ืกื“ืจ:

~/.ื‘ืึทืฉ_ืคึผืจืึธืคื™ืœ ~/.ื‘ืึทืฉ_ืœืึธื’ื™ืŸ ~/.ืคึผืจืึธืคื™ืœ

ื•ื•ืขืŸ ืขืก ื’ืขืคื™ื ื˜ ืื™ื™ื ืขืจ, ืขืก ืกื˜ืึทืจืฅ ืขืก ืื•ืŸ ืกืงื™ืคึผืก ื“ื™ ืื ื“ืขืจืข.

ืื™ืŸ ืึทืŸ ื™ื ื˜ืขืจืึทืงื˜ื™ื•ื•ืข ืฉืึธืœ?

ืื•ื™ื‘ ืื™ืจ ื–ืขื ื˜ ืื™ืŸ ืึท ื ื™ื˜-ืœืึธื’ื™ืŸ ืฉืึธืœ, ืขืก ืื™ื– ืื ื’ืขื ื•ืžืขืŸ ืึทื– ืื™ืจ ื”ืึธื˜ ืฉื•ื™ืŸ ื’ืขื•ื•ืขืŸ ืื™ืŸ ืึท ืœืึธื’ื™ืŸ ืฉืึธืœ, ื“ื™ ืกื•ื•ื™ื•ื•ืข ืื™ื– ืงืึทื ืคื™ื’ื™ืขืจื“ ืื•ืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื™ื ื›ืขืจืึทื˜ื™ื“.

ืื™ืŸ ื“ืขื ืคืึทืœ, ื“ื™ ืคืืœื’ืขื ื“ืข ืฆื•ื•ื™ื™ ื˜ืขืงืขืก ื–ืขื ืขืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“ ืื™ืŸ ืกื“ืจ, ืื•ื™ื‘ ื–ื™ื™ ืขืงืกื™ืกื˜ื™ืจืŸ:

/etc/bash.bashrc ~/.bashrc

ืงื™ื™ืŸ ืึธืคึผืฆื™ืข?

ืื•ื™ื‘ ืื™ืจ ื–ืขื ื˜ ื ื™ืฉื˜ ืื™ืŸ ืึท ืœืึธื’ื™ืŸ ืฉืึธืœ ืึธื“ืขืจ ืึทืŸ ื™ื ื˜ืขืจืึทืงื˜ื™ื•ื• ืฉืึธืœ, ื“ื™ื™ืŸ ืกื•ื•ื™ื•ื•ืข ื•ื•ืขื˜ ื˜ืึทืงืข ื–ื™ื™ืŸ ืœื™ื™ื“ื™ืง. ื“ืึธืก ื– ืึท ืคึผืœืึทืฅ ืคื•ืŸ ืฆืขืžื™ืฉื•ื ื’ (ื–ืขืŸ ื•ื•ื™ื™ื˜ืขืจ ื•ื•ืขื’ืŸ ืงืจืึทืŸ ื“ื–ืฉืึธื‘ืก).

ืื™ืŸ ื“ืขื ืคืึทืœ, ื‘ืึทืฉ ืงื•ืงื˜ ืื•ื™ืฃ ื“ื™ ื•ื•ืขืจื™ืึทื‘ืึทืœื– BASH_ENV ื“ื™ื™ืŸ ืกื•ื•ื™ื•ื•ืข ืื•ืŸ ืงืจื™ื™ื™ืฅ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ื˜ืขืงืข ืกืคึผืขืกื™ืคื™ืขื“ ื“ืึธืจื˜.

ืคึผืจืึธืกื˜ ืฉื•ื•ืขืจื™ืงื™ื™ื˜ืŸ ืื•ืŸ ื›ึผืœืœื™ื ืคื•ืŸ ื’ืจืึธื‘ืขืจ ืคื™ื ื’ืขืจ

ืงืจืึธืŸ ื“ื–ืฉืึธื‘ืก

95% ืคื•ืŸ ื“ื™ ืฆื™ื™ื˜ ืื™ืš ื“ื™ื‘ืึทื’ ื‘ืึทืฉ ืกื˜ืึทืจื˜ืึทืคึผ, ื“ืึธืก ืื™ื– ื•ื•ื™ื™ึทืœ ื“ื™ ืงืจืึทืŸ ืึทืจื‘ืขื˜ ืื™ื– ื ื™ืฉื˜ ืคืœื™ืกื ื“ื™ืง ื•ื•ื™ ื“ืขืจื•ื•ืึทืจื˜.

ื“ืขื ืคืึทืจืฉื™ืœื˜ืŸ ืึทืจื‘ืขื˜ ืึทืจื‘ืขื˜ ื’ื•ื˜ ื•ื•ืขืŸ ืื™ืš ืœื•ื™ืคืŸ ืขืก ืื•ื™ืฃ ื“ื™ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื”, ืึธื‘ืขืจ ืคื™ื™ืœื– ื•ื•ืขืŸ ืื™ืš ืœื•ื™ืคืŸ ืขืก ืื™ืŸ Crontab.

ื“ืึธ ืฆื•ื•ื™ื™ ืกื™ื‘ื•ืช:

  • Cron ื“ื–ืฉืึธื‘ืก ื–ืขื ืขืŸ ื ื™ืฉื˜ ื™ื ื˜ืขืจืึทืงื˜ื™ื•ื•.
  • ื ื™ื˜ ืขื ืœืขืš ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืกืงืจื™ืคึผืก, Cron ื“ื–ืฉืึธื‘ืก ื˜ืึธืŸ ื ื™ื˜ ื™ืจืฉืขื ืขืŸ ื“ื™ ืฉืึธืœ ืกื•ื•ื™ื•ื•ืข.

ื˜ื™ืคึผื™ืงืึทืœืœื™ ืื™ืจ ื•ื•ืขื˜ ื ื™ืฉื˜ ื‘ืึทืžืขืจืงืŸ ืึธื“ืขืจ ื–ืึธืจื’ืŸ ืึทื– ืึท ืฉืึธืœ ืฉืจื™ืคื˜ ืื™ื– ื ื™ืฉื˜ ื™ื ื˜ืขืจืึทืงื˜ื™ื•ื• ื•ื•ื™ื™ึทืœ ื“ื™ ืกื•ื•ื™ื•ื•ืข ื™ื ื›ืขืจืึทืฅ ืคื•ืŸ ื“ื™ ื™ื ื˜ืขืจืึทืงื˜ื™ื•ื• ืฉืึธืœ. ื“ืขื ืžื™ื˜ืœ ืึทื– ืึทืœืฅ 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

Dockerfile ืื™ื– ืœื™ื’ืŸ ื“ืึธ.

ืฆื• ืฆื•ื•ื™ื ื’ืขืŸ ืœืึธื’ื™ืŸ ืื•ืŸ ืกื™ืžื•ืœื™ืจืŸ ืึท ืœืึธื’ื™ืŸ ืฉืึธืœ:

$ bash --login

ืฆื• ืคึผืจื•ื‘ื™ืจืŸ ืึท ื’ืึทื ื’ ืคื•ืŸ ื•ื•ืขืจื™ืึทื‘ืึทืœื– BASH_ENV:

$ env | grep BASH_ENV

ืคึฟืึทืจ ื“ื™ื‘ืึทื’ื™ื ื’ crontab ืึท ืคึผืฉื•ื˜ ืฉืจื™ืคื˜ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“ ื™ืขื“ืขืจ ืžื™ื ื•ื˜ (ืื™ืŸ /root/ascript):

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

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’