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.
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 bash
no 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
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