Ke holo nei ʻo Bash i nā kikoʻī

Inā ʻike ʻoe i kēia ʻaoʻao ma kahi hulina, ke hoʻāʻo nei paha ʻoe e hoʻoponopono i kekahi pilikia me ka holo ʻana i ka bash.

Malia paha ʻaʻole hoʻonohonoho kāu kaiapuni bash i kahi hoʻololi kaiapuni a ʻaʻole maopopo ʻoe i ke kumu. Ua hoʻopaʻa paha ʻoe i kekahi mea i nā faila bash boot a i ʻole nā ​​faila a i ʻole nā ​​​​faila āpau a hiki i ka hana ʻana.

I kēlā me kēia hihia, ʻo ka manaʻo o kēia memo ka waiho ʻana i ke kaʻina hana no ka hoʻomaka ʻana i ka bash e like me ka hiki ke hiki iā ʻoe ke hoʻoponopono i nā pilikia.

Kiʻikuhi

Hōʻuluʻulu kēia kahe holo i nā kaʻina hana āpau i ka wā e holo ai i ka bash.

Ke holo nei ʻo Bash i nā kikoʻī

I kēia manawa, e nānā pono kākou i kēlā me kēia māhele.

E komo i ka Shell?

Pono mua ʻoe e koho inā ʻoe i loko o ka shell login a i ʻole.

ʻO ka shell login ka pūpū mua āu e komo ai i kou wā e komo ai no kahi kau pili. ʻAʻole koi ʻia ka inoa inoa a me ka ʻōlelo huna i ka shell login. Hiki iā ʻoe ke hoʻoikaika i ka shell login e hoʻomaka me ka hoʻohui ʻana i kahi hae --login ke kaheaia bashno ka laʻana:

bash --login

Hoʻonohonoho ka shell login i ke kaiapuni kumu ke hoʻomaka mua ʻoe i ka shell bash.

Pākahi?

A laila hoʻoholo ʻoe inā pili ka pūpū a i ʻole.

Hiki ke nānā ʻia kēia ma ke ʻano o ka mea hoʻololi PS1 (hoʻokomo ia i ka hana hoʻokomo kauoha):

ina [ "${PS1-}" ]; a laila e hoʻolele i ka pilina a i ʻole e hoʻolele i ka fi

A i ʻole e ʻike inā ua hoʻonohonoho ʻia ke koho -i, me ka hoʻohana ʻana i kahi hoʻololi hyphen kūikawā - ma ka bash, no ka laʻana:

$echo$-

Inā he hōʻailona ma ka puka i, a laila pili ka pūpū.

I loko o ka pūpū komo?

Inā ʻoe i loko o kahi pūpū login, a laila ʻimi ʻo bash i ka faila /etc/profile a holo inā loaʻa.

A laila e huli i kekahi o kēia mau faila ʻekolu ma ke ʻano penei:

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

Ke loaʻa iā ia kekahi, hoʻomaka ia a lele i nā mea ʻē aʻe.

I loko o kahi pūpū pili?

Inā ʻoe i loko o kahi pūpū non-login, manaʻo ʻia ua komo ʻoe i loko o ka shell login, ua hoʻonohonoho ʻia ke kaiapuni a e hoʻoili ʻia.

I kēia hihia, ua hoʻokō ʻia nā faila ʻelua ma ke ʻano, inā aia lākou:

/etc/bash.bashrc ~/.bashrc

ʻAʻohe koho?

Inā ʻaʻole ʻoe i loko o ka shell login a i ʻole ka shell interactive, a laila nele maoli kou wahi. ʻO kēia ke kumu nui o ka huikau (e ʻike ma lalo e pili ana i nā hana cron).

I kēia hihia, nānā ka bash i ka loli BASH_ENV kou kaiapuni a hoʻokumu i ka faila i kuhikuhi ʻia ma laila.

Nā pilikia maʻamau a me nā lula o ka manamana lima

nā hana cron

ʻO 95% o ka manawa aʻu e debug bash hoʻomaka ʻana no ka mea ʻaʻole holo ka hana cron e like me ka mea i manaʻo ʻia.

ʻO kēia hana pōʻino hana maikaʻi ke holo wau ma ka laina kauoha, akā hāʻule i ka wā e holo ai au i crontab.

he mea ʻelua kumu:

  • ʻAʻole pili nā hana Cron.
  • ʻAʻole like me nā palapala laina kauoha, ʻaʻole i hoʻoili ʻia nā hana cron i ke kaiapuni shell.

ʻO ka maʻamau, ʻaʻole ʻoe e ʻike a manaʻo paha ʻaʻole pili ka ʻatikala shell no ka mea ua hoʻoilina ke kaiapuni mai ka shell interactive. ʻO kēia keʻano o nā mea a pau PATH и alias hoʻonohonoho ʻia e like me kāu e manaʻo ai.

ʻO kēia ke kumu e pono pinepine ai e hoʻonohonoho i kahi kiko'ī PATH no kahi hana cron e like me kēia:

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

Nā palapala e kāhea ana kekahi i kekahi

ʻO kekahi pilikia maʻamau ʻo ia ke kuhi hewa ʻana i nā palapala e kāhea aku i kekahi i kekahi. ʻo kahi laʻana, /etc/profile hoopii i ~/.bashrc.

Hana ʻia kēia i ka wā i hoʻāʻo ai kekahi e hoʻoponopono i kekahi hewa a me he mea lā ua hana nā mea a pau. ʻO ka mea pōʻino, i ka wā e pono ai ʻoe e hoʻokaʻawale i kēia mau ʻano o nā kau, e ala mai nā pilikia hou.

Kiʻi Sandboxed Docker

No ka hoʻāʻo ʻana me ka holo ʻana i kahi pūpū, ua hana wau i kahi kiʻi Docker hiki ke hoʻohana ʻia e debug i ka holo ʻana i kahi pūpū i kahi wahi palekana.

Hoʻomaka:

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

Aia ʻo Dockerfile maanei.

No ka hoʻoikaika ʻana i ke komo ʻana a hoʻolikelike i kahi shell login:

$ bash --login

E ho'āʻo i kahi hoʻonohonoho o nā mea hoʻololi BASH_ENV:

$ env | grep BASH_ENV

No ka hoʻopau ʻana crontab E hoʻokō ʻia kahi palapala maʻalahi i kēlā me kēia minuke (in /root/ascript):

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

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka