
જ્યારે તમે Linux સાથે ટિંકરિંગ શરૂ કરો છો, ત્યારે સૌથી ગૂંચવણભરી વિભાવનાઓમાંની એક પ્રખ્યાત પર્યાવરણ ચલ છે. પાથદરેક વ્યક્તિ તમને "તેને તમારા PATH માં ઉમેરો", "તમારા PATH ને તપાસો" અથવા "તે કામ કરી રહ્યું નથી કારણ કે તે તમારા PATH માં નથી" જેવી વાતો કહે છે, પરંતુ તેઓ ભાગ્યે જ શાંતિથી સમજાવે છે કે તે બરાબર શું છે, તે શેના માટે છે અને સિસ્ટમમાં વસ્તુઓને ગડબડ કર્યા વિના તેને કેવી રીતે મેનેજ કરવું.
આ લેખમાં આપણે વિગતવાર જોઈશું કે તેઓ શું છે. Linux માં પર્યાવરણ ચલોતે શું ભૂમિકા ભજવે છે? પાથઆ સમજાવે છે કે તેને અસ્થાયી રૂપે કે કાયમી ધોરણે કેવી રીતે જોવું અને સંશોધિત કરવું, કઈ ફાઇલો સામેલ છે, તે કઈ લાક્ષણિક સમસ્યાઓનું કારણ બને છે અને તેને કેવી રીતે હલ કરવી. ધ્યેય એ છે કે, જ્યારે તમે વાંચન પૂર્ણ કરો છો, ત્યારે તમે સ્પષ્ટપણે સમજી શકો છો કે તમે શું કરી રહ્યા છો અને શા માટે, અગમ્ય શબ્દભંડોળમાંથી પસાર થયા વિના.
Linux માં પર્યાવરણ ચલ શું છે?
જ્યારે આપણે કમ્પ્યુટિંગ વિશે વાત કરીએ છીએ, ત્યારે ચલ તે ફક્ત મેમરીમાં સંગ્રહિત મૂલ્ય સાથે સંકળાયેલું એક નામ છે જે સમય જતાં બદલાઈ શકે છે. ઓપરેટિંગ સિસ્ટમના સંદર્ભમાં, પર્યાવરણીય ચલો આ નામાંકિત મૂલ્યો છે જે શેલ અને પ્રક્રિયા એક્ઝેક્યુશન વાતાવરણમાં રહે છે, અને સંગ્રહ કરવા માટે વપરાય છે સેટિંગ્સ, રૂટ્સ, ઓળખપત્રો અને પસંદગીઓ કે કાર્યક્રમોને કાર્ય કરવાની જરૂર છે.
લિનક્સ (અને અન્ય યુનિક્સ જેવી સિસ્ટમો) માં આ ચલો એક પ્રકારનું બનાવે છે વૈશ્વિક શબ્દકોશ NAME=VALUE જોડીઓ સાથે, જે શેલમાંથી આદેશો અથવા સ્ક્રિપ્ટો એક્ઝિક્યુટ થાય ત્યારે આપમેળે ચાઇલ્ડ પ્રોસેસમાં પસાર થાય છે. આમ, પ્રોગ્રામ વપરાશકર્તાની હોમ ડિરેક્ટરી, સિસ્ટમ ભાષા, ઉપયોગમાં લેવાતો શેલ, અથવા, જેમ આપણે ટૂંક સમયમાં જોઈશું, એક્ઝિક્યુટેબલ્સ ક્યાં શોધવા તે ડિરેક્ટરીઓ જેવા મૂલ્યોની પૂછપરછ કરી શકે છે.
પર્યાવરણ ચલો હોઈ શકે છે સ્થાનિક કે વૈશ્વિકસ્થાનિક ચલ ફક્ત તે શેલમાં જ અસ્તિત્વ ધરાવે છે જ્યાં તે વ્યાખ્યાયિત થયેલ છે, જ્યારે નિકાસ કરેલ ચલ તે શેલમાંથી લોન્ચ થયેલા બધા થ્રેડો (સ્ક્રિપ્ટ્સ, પ્રોગ્રામ્સ, વગેરે) દ્વારા વારસામાં મળે છે. વધુમાં, તે એક જ વપરાશકર્તા માટે અથવા સિસ્ટમ-વ્યાપી માટે વ્યાખ્યાયિત કરી શકાય છે, જે બધા લોગ-ઇન થયેલા વપરાશકર્તાઓને અસર કરે છે.
Linux માં સામાન્ય પર્યાવરણ ચલો
આ સિસ્ટમ મૂળભૂત રીતે ઘણા બધા ચલોને વ્યાખ્યાયિત કરે છે જે જાણવા યોગ્ય છે કારણ કે તેનો સતત ઉપયોગ થાય છે. કેટલાક સૌથી સામાન્ય છે: ઘર, વપરાશકર્તા, શેલ, LANG, PWD અને PATHબીજા ઘણા બધામાં. તે બધા સામાન્ય રીતે સ્ક્રિપ્ટો અથવા શેલમાં અન્ય સામાન્ય ચલોથી અલગ પાડવા માટે મોટા અક્ષરોમાં લખાયેલા હોય છે.
ઉદાહરણ તરીકે, ચલ ઘર વર્તમાન વપરાશકર્તાની હોમ ડિરેક્ટરી તરફ નિર્દેશ કરે છે (કંઈક આવું). /home/juan), યુઝર તેમાં લોગ ઇન થયેલા યુઝરનું નામ છે, SHELL ડિફોલ્ટ શેલ પાથ સૂચવે છે (જેમ કે /bin/bash o /bin/zsh) અને PWD આદેશ દ્વારા બતાવેલ વર્તમાન કાર્યરત ડિરેક્ટરી, તે જ ડિરેક્ટરી સાચવો. pwd.
ભાષા અને પ્રાદેશિક સેટિંગ્સને લગતા ચલો પણ મહત્વપૂર્ણ છે, જેમ કે લેંગ અથવા જે શરૂ થાય છે એલસી_જે અક્ષર સમૂહ, તારીખ ફોર્મેટ, ચલણ ફોર્મેટ, વગેરે વ્યાખ્યાયિત કરે છે. બીજો ક્લાસિક છે સંપાદક o વિઝ્યુઅલજ્યારે તમારે કંઈક સંપાદિત કરવાની જરૂર હોય ત્યારે કયું ટેક્સ્ટ એડિટર ખોલવું તે જાણવા માટે ઘણા ટૂલ્સનો ઉપયોગ થાય છે, જેમ કે આ કિસ્સામાં થાય છે crontab -e.
PATH પર્યાવરણ ચલ ખરેખર શું છે?
આ લેખનો મુખ્ય મુદ્દો પર્યાવરણીય ચલ છે. પાથઆ ચલ સમાવે છે a ક્રમબદ્ધ ડિરેક્ટરીઓની યાદી બે કોલોન દ્વારા અલગ (:આ તે જગ્યા છે જ્યાં તમે ટર્મિનલમાં સંપૂર્ણ પાથ સ્પષ્ટ કર્યા વિના આદેશ લખો છો ત્યારે સિસ્ટમ એક્ઝિક્યુટેબલ ફાઇલો શોધશે. શાબ્દિક રીતે, તે "પાથ" છે જે તમારું શેલ પ્રોગ્રામ્સ શોધવા માટે અનુસરે છે.
જ્યારે તમે કોઈ આદેશ લખો છો જેમ કે ls o વૃક્ષતમે ખરેખર સિસ્ટમને તમારી ડિસ્ક પર ક્યાંક સ્થિત બાઈનરી ફાઇલ ચલાવવા માટે કહી રહ્યા છો. ચલનો આભાર પાથશેલ તે યાદીમાંની દરેક ડિરેક્ટરીમાં ક્રમશઃ પુનરાવર્તન કરે છે, જ્યાં સુધી તે તમે લખેલા આદેશના નામ સાથે સમાન એક્ઝિક્યુટેબલ ફાઇલ શોધે નહીં. જો તે તેને શોધે છે, તો તે તેને એક્ઝિક્યુટ કરે છે; જો નહીં, તો તે ક્લાસિક સંદેશ પરત કરે છે આદેશ મળ્યો નથી.
ઘણા વિતરણોમાં તે સામાન્ય છે કે પાથ શૈલીના રૂટ્સનો સમાવેશ કરો /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbinદરેક પાથ જે દેખાય છે તેમાં એક ડિરેક્ટરી હોય છે જ્યાં એક્ઝિક્યુટેબલ્સ રહે છે જેને તમે સંપૂર્ણ પાથનો ઉલ્લેખ કર્યા વિના બોલાવી શકો છો, જે ટર્મિનલમાં કામ કરતી વખતે જીવનને વધુ અનુકૂળ બનાવે છે.
માં ડિરેક્ટરીઓનો ક્રમ પાથ તે મહત્વપૂર્ણ છે, કારણ કે તે નક્કી કરે છે કે અગ્રતાજો એક જ નામનું એક્ઝિક્યુટેબલ બે અલગ અલગ પાથમાં અસ્તિત્વમાં હોય, તો સૂચિમાં પહેલા દેખાતો એકનો ઉપયોગ કરવામાં આવશે. આ તમને, ઉદાહરણ તરીકે, પ્રોગ્રામનું વૈકલ્પિક સંસ્કરણ મેળવવાની મંજૂરી આપે છે. /usr/local/bin જે સિસ્ટમ વર્ઝનને ઓવરરાઇટ કરે છે /usr/bin ફક્ત રૂટનો ક્રમ બદલીને.
પર્યાવરણ ચલો અને PATH નું વર્તમાન મૂલ્ય કેવી રીતે જોવું
તમારા શેલ સત્રમાં સક્રિય પર્યાવરણ ચલોનું નિરીક્ષણ કરવા માટે, તમારી પાસે ઘણા આદેશો ઉપલબ્ધ છે. સૌથી સીધા આદેશોમાંથી એક છે આશરે, બતાવે છે બધા વ્યાખ્યાયિત ચલો તેના NAME=VALUE ફોર્મેટ સાથે. જો તમે ચલાવો છો env તમને રેખાઓનો એક દોર દેખાશે જેની વચ્ચે દેખાશે HOME, USER, SHELL, PATH, વગેરે
બીજો સામાન્ય રીતે વપરાતો આદેશ છે printenvજે પર્યાવરણ ચલોની યાદી પણ આપે છે પરંતુ ખાસ કરીને એક ચોક્કસ ચલ શોધવા માટે ઉપયોગી છે. જો તમે ટાઇપ કરો છો printenv PATHઆઉટપુટ ફક્ત ચલનું વર્તમાન મૂલ્ય હશે. પાથઆ તમને એક નજરમાં જોવાની મંજૂરી આપે છે કે તેમાં કઈ ડિરેક્ટરીઓ છે અને તે કયા ક્રમમાં મૂકવામાં આવી છે.
વધુમાં, તમે આદેશનો ઉપયોગ કરી શકો છો ઇકો કોઈપણ ચલની સામગ્રી દર્શાવવા માટે ડોલર ચિહ્નની બાજુમાં. ઉદાહરણ તરીકે, echo $USER તે તમારા વપરાશકર્તા નામ પ્રદર્શિત કરશે, અને echo $PATH તે તમને ડિરેક્ટરીઓની સંપૂર્ણ યાદી બતાવશે જ્યાં સિસ્ટમ એક્ઝિક્યુટેબલ્સને અલગ કરીને શોધશે બે મુદ્દાઓઆ વાક્યરચના સાથે $NOMBRE તે સામાન્ય રીતે સ્ક્રિપ્ટોમાં પણ વપરાય છે.
સિસ્ટમમાં આદેશ ક્યાં સ્થિત છે તે કેવી રીતે શોધવું
એ જાણીને કે એક આદેશ માં છે પાથ તે સરસ છે, પરંતુ ક્યારેક તમારે ફાઇલ સિસ્ટમમાં તેનો ચોક્કસ માર્ગ શોધવાની જરૂર પડે છે. તેના માટે, તમારી પાસે આદેશો છે જેમ કે જે y ક્યા છે, જે તમને જણાવે છે કે જ્યારે તમે આદેશ બોલાવો છો ત્યારે ચાલતી બાઈનરી ભૌતિક રીતે ક્યાં સ્થિત છે.
જો તમે દોડો છો, ઉદાહરણ તરીકે, which treeલાક્ષણિક આઉટપુટ કંઈક આના જેવું હશે /usr/bin/treeઆ સૂચવે છે કે એક્ઝેક્યુટેબલ તે ડિરેક્ટરીમાં રહે છે, જે બદલામાં તમારા ચલમાં શામેલ છે. પાથતેના ભાગ માટે, આદેશ ક્યા છે તે થોડું વધુ સંપૂર્ણ છે અને બાઈનરીનો માર્ગ અને તેના મેન પેજીસ અને અન્ય સંબંધિત ફાઇલોનું સ્થાન પણ બતાવી શકે છે.
આ માહિતી ખૂબ જ ઉપયોગી છે જ્યારે તમને શંકા હોય કે પ્રોગ્રામનું કોઈ અલગ વર્ઝન તમારા વિચાર કરતાં ચાલી રહ્યું છે, અથવા જ્યારે તમે સંબંધિત સમસ્યાઓ ડીબગ કરી રહ્યા છો PATH માં રૂટ્સ અને પ્રાધાન્યતાકઈ બાઈનરી કહેવાય છે તે બરાબર જોવાથી ઘણી માથાનો દુખાવો ટાળી શકાય છે.
શેલ સ્ક્રિપ્ટો કેવી રીતે ચલાવવી અને તેમનો PATH સાથેનો સંબંધ
શેલ સ્ક્રિપ્ટો સામાન્ય રીતે તેમના કોડને એક્સટેન્શનવાળી ફાઇલોમાં સાચવે છે. .એસ. એચજોકે તે ફરજિયાત નથી. તમે તેમને બે રીતે ચલાવી શકો છો: સ્પષ્ટ માર્ગ સૂચવતો અથવા સ્ક્રિપ્ટ ડિરેક્ટરીમાં હોવા પર આધાર રાખીને પાથજો સ્ક્રિપ્ટ તમારી વર્તમાન ડિરેક્ટરીમાં છે, તો ક્લાસિક રીતનો ઉપયોગ કરવાનો છે ./mishcript.sh.
જો તમે સંપૂર્ણ પાથ સ્પષ્ટ કર્યા વિના સ્ક્રિપ્ટને કૉલ કરવા માંગતા હો, તો તેને ડિરેક્ટરીમાં સાચવવાનું શ્રેષ્ઠ છે પાથ, કેવી રીતે ~/bin (જો તમે તેને ઉમેરો છો), /usr/local/bin અથવા દ્વિસંગીઓની બીજી ડિરેક્ટરી. તમે પણ કરી શકો છો .ડેસ્કટોપ ફાઇલો બનાવો PATH માં ફેરફાર કર્યા વિના એપ્લિકેશનો શરૂ કરવા માટે. આ રીતે, તમારે ફક્ત સ્ક્રિપ્ટ નામ લખવાની જરૂર છે, જો તેમાં એક્ઝેક્યુશન પરવાનગીઓ હોય અને પ્રથમ લાઇનમાં ઉલ્લેખિત યોગ્ય ઇન્ટરપ્રીટર હોય (પ્રખ્યાત શેબેંગ, જેમ કે #!/bin/bash).
સ્ક્રિપ્ટ ચલાવવા વચ્ચેનો તફાવત કંઈક મહત્વપૂર્ણ છે ./script.sh અને સાથે સ્ત્રોત script.shપ્રથમ કિસ્સામાં, એક સબપ્રોસેસ બનાવવામાં આવે છે જે તમારા પર્યાવરણ ચલોને વારસામાં મેળવે છે પરંતુ તેમાં કરેલા કોઈપણ ફેરફારો પરત કરતું નથી; બીજા કિસ્સામાં, સ્ક્રિપ્ટ તમારા વર્તમાન શેલમાં ચાલે છે, તેથી તે સીધા ચલોને સુધારી શકે છે જેમ કે પાથ અને તે ફેરફારો તમારા સત્રમાં સક્રિય રહેશે.
Linux માં પર્યાવરણ ચલો કેવી રીતે બનાવવા અને સંશોધિત કરવા
Bash માં પર્યાવરણ ચલ બનાવવા અથવા સમાયોજિત કરવાની મૂળભૂત રીત એ આદેશનો ઉપયોગ કરવાનો છે નિકાસલાક્ષણિક વાક્યરચના છે export NOMBRE="valor"જ્યાં તમે મૂલ્ય વ્યાખ્યાયિત કરો છો અને તેને ચાઇલ્ડ પ્રક્રિયાઓમાં નિકાસ કરી શકાય તેવું ચિહ્નિત કરો છો. ઉદાહરણ તરીકે, તમે કરી શકો છો export MI_VARIABLE="HolaMundo" અને પછી તેને તપાસો echo $MI_VARIABLE.
જો તમે કોઈ ચલને વ્યાખ્યાયિત કર્યા વિના નિકાસ (ઉદાહરણ તરીકે, MI_VAR=algoઆ તમારા શેલમાં અસ્તિત્વમાં રહેશે પરંતુ તમે ચલાવો છો તે પ્રોગ્રામ્સ અથવા સ્ક્રિપ્ટ્સમાં પ્રસારિત થશે નહીં. તેના બદલે, ઉપયોગ કરીને નિકાસ તમે ખાતરી કરો છો કે કોઈપણ ચાઇલ્ડ પ્રોસેસ તે ચલ વાંચી શકે છે, જે તમારા એપ્લિકેશનોને ઓળખપત્રો, પ્રોજેક્ટ પાથ અથવા સમય ઝોન પરિમાણો જેવી સેટિંગ્સને ઍક્સેસ કરવા માટે મહત્વપૂર્ણ છે.
પર્યાવરણ ચલને ઉલટાવી અથવા કાઢી નાખવા માટે, આ આદેશનો ઉપયોગ થાય છે. અનસેટ કરો. સાથે unset VAR તમે વર્તમાન વાતાવરણમાંથી VAR ચલ દૂર કરો છો, જેનો અર્થ એ છે કે તે હવે નવા થ્રેડો માટે ઉપલબ્ધ રહેશે નહીં. ઉદાહરણ તરીકે, જો તમે કરો છો unset TZ ચલને સ્પર્શ કર્યા પછી TZજ્યારે તમે ફરીથી સમય તપાસશો ત્યારે સિસ્ટમ તેના ડિફોલ્ટ સમય ઝોન વર્તન પર પાછી ફરશે date.
PATH ચલ (કામચલાઉ ફેરફારો) ને કેવી રીતે સંશોધિત કરવું
ચલને સંશોધિત કરો પાથ કામચલાઉ ધોરણે, એટલે કે, ફક્ત વર્તમાન ટર્મિનલ સત્ર માટે, તે હાલના એકમાંથી નવું મૂલ્ય બનાવવા જેટલું સરળ છે. એક સામાન્ય પ્રથા એ છે કે પાથ સૂચિના અંતમાં અથવા શરૂઆતમાં એક નવી ડિરેક્ટરી ઉમેરવી, જે તમે તે એક્ઝિક્યુટેબલ્સને કઈ પ્રાથમિકતા આપવા માંગો છો તેના આધારે.
પેરા અંતે એક રસ્તો ઉમેરો de પાથ તમે કંઈક આવું કરી શકો છો export PATH="$PATH:/home/usuario/scripts"આ રીતે તમે હાલની સામગ્રી ગુમાવશો નહીં; તમે ફક્ત તમારી નવી ડિરેક્ટરી સૂચિના અંતમાં ઉમેરી શકો છો. તે બિંદુથી, તમે તેમાં કોઈપણ સ્ક્રિપ્ટ અથવા બાઈનરી ફાઇલ ચલાવી શકો છો. /home/usuario/scripts સંપૂર્ણ રૂટ લખ્યા વિના.
જો, બીજી બાજુ, તમે ઇચ્છો છો કે તે નવો માર્ગ બીજા માર્ગો કરતાં પ્રાથમિકતા લે, તો તમે કરી શકો છો શરૂઆતમાં તેને દાખલ કરો બનાવવું export PATH="/home/usuario/scripts:$PATH"તો, જો તમારા સ્ક્રિપ્ટ્સ ફોલ્ડરમાં અને અંદર સમાન નામનું એક્ઝિક્યુટેબલ હોય તો /usr/binતમારા વ્યક્તિગત ફોલ્ડરનો ઉપયોગ કરવામાં આવશે કારણ કે તેનો રસ્તો આગળ છે.
તે પણ શક્ય છે PATH મૂલ્યને સંપૂર્ણપણે બદલો શરૂઆતથી તેને વ્યાખ્યાયિત કરવું, ઉદાહરણ તરીકે, export PATH="/usr/local/bin:/usr/bin:/bin"આ મુશ્કેલ છે, કારણ કે જો તમે મહત્વપૂર્ણ પાથ છોડી દો છો, તો તમે સિસ્ટમને મૂળભૂત આદેશો શોધવાથી રોકી શકો છો. વધુમાં, ટર્મિનલમાં કરવામાં આવેલા આ બધા ફેરફારો કામચલાઉ છે: શેલ સત્ર બંધ કરતાની સાથે જ તે ખોવાઈ જશે, અને જ્યારે તમે ટર્મિનલ ફરીથી ખોલશો, ત્યારે ડિફોલ્ટ ગોઠવણી લોડ થઈ જશે.
PATH અને અન્ય પર્યાવરણ ચલોને કાયમી ધોરણે કેવી રીતે ગોઠવવા
જો તમે પરિવર્તન ઇચ્છો છો પાથ (અથવા અન્ય કોઈપણ પર્યાવરણ ચલ) દર વખતે જ્યારે તમે ટર્મિનલ ખોલો ત્યારે જાળવવા માટે, તમારે તેને માં વ્યાખ્યાયિત કરવું આવશ્યક છે શેલ સ્ટાર્ટઅપ ફાઇલોબાશમાં, ઉપયોગમાં લેવાતી સૌથી સામાન્ય વસ્તુ છે ~/.bashrc ઇન્ટરેક્ટિવ શેલો માટે, અને ~/.bash_profile o ~/.profile લોગિન શેલ્સ માટે. Zsh માં, સૌથી સામાન્ય સમકક્ષ છે ~/.zshrc.
લાક્ષણિક અભિગમ એ છે કે ટેક્સ્ટ એડિટર વડે તમારી રૂપરેખાંકન ફાઇલને સંપાદિત કરો અને એક લાઇન ઉમેરો જ્યાં તમે ચલને સમાયોજિત કરો. ઉદાહરણ તરીકે, તમે તમારી ખોલી શકો છો ~/.bashrc કોન નેનો o વિમ અને અંતે આવું કંઈક ઉમેરો export PATH="$PATH:/opt/tacata"તમે ફાઇલ સેવ કરો છો, તમે તેને ચલાવો છો source ~/.bashrc રૂપરેખાંકન ફરીથી લોડ કરવા માટે અને, તે ક્ષણથી, ડિરેક્ટરી /opt/tacata તે હંમેશા તમારા PATH માં સમાવવામાં આવશે.
વ્યક્તિગત ફાઇલો ઉપરાંત, રૂપરેખાંકન ફાઇલો પણ છે વૈશ્વિક જે સિસ્ટમના બધા વપરાશકર્તાઓને અસર કરે છે. સૌથી સામાન્ય પૈકી /etc/profile, ડિરેક્ટરી /etc/profile.d/, /etc/bashrc o /etc/bash.bashrc, અને કેટલાક કિસ્સાઓમાં આર્કાઇવ /etc/environmentઆ ફાઇલોમાં ફેરફાર કરવા માટે એડમિનિસ્ટ્રેટર વિશેષાધિકારોની જરૂર પડે છે અને તે કાળજીપૂર્વક કરવું જોઈએ, કારણ કે એક ભૂલ બધા વપરાશકર્તાઓને ખરાબ વાતાવરણમાં મૂકી શકે છે.
એ સમજવું પણ મહત્વપૂર્ણ છે કે જે ક્રમમાં તેઓ લોડ થાય છે આ ફાઇલો. તે લોગિન શેલ છે કે નહીં તેના આધારે, બાશ પહેલા ગ્લોબલ ફાઇલો વાંચી શકે છે, પછી ~/.bash_profile o ~/.profile, અને છેવટે ~/.bashrcજો તમે એવી ફાઇલમાં નિકાસ મૂકો છો જે તમારું વર્તમાન સત્ર લોડ થઈ રહ્યું નથી, તો ફેરફાર અમલમાં આવશે નહીં. તેથી જ PATH કસ્ટમાઇઝેશનને વ્યાખ્યાયિત કરવું સામાન્ય છે ~/.bashrc ડેસ્કટોપ વાતાવરણમાં.
સ્થાનિક ચલો, વૈશ્વિક ચલો, અને ઉપપ્રક્રિયાઓનો વારસો
શેલ સાથે કામ કરતી વખતે, તે વચ્ચે તફાવત કરવો ઉપયોગી છે સ્થાનિક અને પર્યાવરણીય ચલોસ્થાનિક ચલ એ છે જેને તમે શેલમાં નિકાસ કર્યા વિના વ્યાખ્યાયિત કરો છો, ઉદાહરણ તરીકે local_var=edwardઆ ચલ ફક્ત તે શેલ ઇન્સ્ટન્સમાં જ દેખાય છે અને તમે ચલાવો છો તે પ્રક્રિયાઓમાં પસાર થતો નથી.
જ્યારે તમે ઉપયોગ કરો છો નિકાસતમે તમારા સત્રમાં ચલને વૈશ્વિક પર્યાવરણ ચલમાં રૂપાંતરિત કરો છો. ઉદાહરણ તરીકે, જો તમે કરો છો export GLOBAL_VAR="Hola" અને પછી તમે અમલ કરો છો echo $GLOBAL_VARતમને મૂલ્ય દેખાશે, અને તે શેલમાંથી લોન્ચ થયેલ કોઈપણ સ્ક્રિપ્ટ અથવા પ્રોગ્રામને પણ તેની ઍક્સેસ હશે. ગ્લોબલ_વીએઆરઆ વારસો જ પર્યાવરણ ગોઠવણીને તમારી એપ્લિકેશનોમાં ફેલાવવાનું કારણ બને છે.
જોકે, વારસો એકતરફી છે: સબપ્રોસેસ તેના પેરેન્ટના પર્યાવરણની નકલ મેળવે છે, પરંતુ તે તેના ચલોમાં કરેલા ફેરફારો પેરેન્ટ પ્રક્રિયામાં પાછા પસાર થતા નથી. તેથી, જો તમે ઇચ્છો છો કે સ્ક્રિપ્ટ તમારા પાથ તમારા સત્રમાં તેને સતત ચલાવવા માટે, તમારે તેને આનાથી ચલાવવું આવશ્યક છે સ્ત્રોત (o .) ને એકલ આદેશ તરીકે લોન્ચ કરવાને બદલે.
.env ફાઇલો અને પર્યાવરણ ગોઠવણીનો ઉપયોગ
ઘણા વિકાસ પ્રોજેક્ટ્સમાં, ખાસ કરીને વેબ એપ્લિકેશન્સ અને માઇક્રોસર્વિસિસમાં, નો ઉપયોગ .env ફાઇલો રૂપરેખાંકનને કેન્દ્રિત કરવા માટે. આ ફાઇલોમાં સામાન્ય રીતે ફોર્મેટમાં રેખાઓ હોય છે NOMBRE=VALOR, દાખ્લા તરીકે DB_HOST=localhost o API_KEY=xxxxxxxx, અને પછી કોઈ ટૂલ અથવા લાઇબ્રેરી તેમને એપ્લિકેશનના પર્યાવરણ ચલોમાં લોડ કરવાનું ધ્યાન રાખે છે.
આ અભિગમ સ્પષ્ટ રીતે અલગ પાડવાની મંજૂરી આપે છે સ્રોત કોડ દ લા સંવેદનશીલ ગોઠવણીજેમ કે ડેટાબેઝ ઓળખપત્રો અથવા API કી, તેમને જાહેર ભંડારોમાં સમાપ્ત થતા અટકાવે છે. દરેક પર્યાવરણ (વિકાસ, પરીક્ષણ, ઉત્પાદન) ની પોતાની ફાઇલ હોઈ શકે છે .env વિવિધ મૂલ્યો સાથે, જે એક જ એપ્લિકેશનને વિવિધ સંદર્ભોમાં ઉપયોગમાં લેતી વખતે ઘણી સુગમતા પૂરી પાડે છે.
જોકે, આ ફાઇલોની પરવાનગીઓ અને સ્થાનને નિયંત્રિત કરવું જરૂરી છે, કારણ કે તેમાં સંવેદનશીલ માહિતી હોય છે. સામાન્ય પ્રથા એ છે કે તેમને .gitignore તેમને ક્યારેય વર્ઝન કંટ્રોલ પર અપલોડ થતા અટકાવવા, અને સર્વર પર તેમના વાંચનને પ્રતિબંધિત કરવા જેથી ફક્ત એપ્લિકેશન ચલાવનાર વપરાશકર્તા જ તેમને ઍક્સેસ કરી શકે.
PATH અને અન્ય પર્યાવરણ ચલોને હેન્ડલ કરતી વખતે શ્રેષ્ઠ પ્રથાઓ
હેન્ડલિંગ પર્યાવરણીય ચલો તે નજીવી લાગે છે, પરંતુ નબળા સંચાલનથી એવી સમસ્યાઓ થઈ શકે છે જેનું નિરાકરણ કરવું મુશ્કેલ છે. એક સારી ટેવ એ છે કે વર્ણનાત્મક નામો જ્યારે તમે તમારા પોતાના ચલો બનાવો છો, જેમ કે DB_USER, REDIS_PORT o PROJECT_ROOTગુપ્ત સંક્ષિપ્ત શબ્દો અથવા સામાન્ય નામો ટાળવા જે થોડા સમય પછી કોઈને યાદ ન રહે.
સાથે પાથ ખાસ કરીને, ચલ એક અનંત સ્ટ્રિંગ ન બને ત્યાં સુધી આડેધડ પાથ ઉમેરવાના ફાંદામાં ફસાઈ જવું સરળ છે. આ ફક્ત વાંચવાનું મુશ્કેલ બનાવે છે, પરંતુ જો વિવિધ પાથમાં ડુપ્લિકેટ એક્ઝિક્યુટેબલ હોય તો તે સંઘર્ષનું કારણ પણ બની શકે છે. વાજબી રીતે ટૂંકો અને સુવ્યવસ્થિત PATH રાખવાથી ભૂલો ઓછી થાય છે અને જ્યારે કંઈક ખોટું થાય છે ત્યારે મુશ્કેલીનિવારણ સરળ બને છે.
અન્ય કી ભલામણ છે રેકોર્ડ રાખો પ્રોજેક્ટ કયા પર્યાવરણ ચલોનો ઉપયોગ કરે છે અને દરેકનો અર્થ શું છે? રિપોઝીટરીમાં એક નમૂના ફાઇલ શામેલ કરો (જેમ કે .env.exampleREADME માં અપેક્ષિત ચલોની સૂચિ સાથેનો એક વિભાગ અન્ય વિકાસકર્તાઓને (અથવા ભવિષ્યમાં તમારી જાતને) યોગ્ય વાતાવરણ કેવી રીતે સેટ કરવું તે ઝડપથી સમજવામાં મદદ કરે છે.
PATH સંબંધિત સામાન્ય સમસ્યાઓ અને તેમને કેવી રીતે ડીબગ કરવી
Linux માં સૌથી સામાન્ય ભૂલોમાંની એક લાક્ષણિક "આદેશ મળ્યો નથી"જ્યારે તમે કોઈ પ્રોગ્રામ ચલાવવાનો પ્રયાસ કરો છો જે તમને ખબર હોય કે ઇન્સ્ટોલ કરેલો છે. ઘણા કિસ્સાઓમાં, સમસ્યા એ હોય છે કે એક્ઝેક્યુટેબલ જ્યાં સ્થિત છે તે ડિરેક્ટરી..." તે PATH માં સમાવેલ નથી.કાં તો તે જૂની કિંમત પર સેટ છે, અથવા તમે ભૂલથી ચલને ઓવરરાઇટ કરી દીધો છે.
આ પ્રકારની પરિસ્થિતિઓને ઉકેલવા માટે, તમે શરૂઆત કરી શકો છો echo $PATH કયા રૂટનો ઉપયોગ થઈ રહ્યો છે તે તપાસવા માટે. પછી ઉપયોગ કરો whereis comando o which comando તે તમને જણાવશે કે એક્ઝેક્યુટેબલ અસ્તિત્વમાં છે કે નહીં અને તે ક્યાં સ્થિત છે. જો આ આદેશો દ્વારા પરત કરાયેલ પાથ તમારા PATH માં દેખાતો નથી, તો તમે સમસ્યા ઓળખી લીધી છે: તમારે તે ડિરેક્ટરીને ચલ સાથે ઉમેરવી પડશે, કાં તો અસ્થાયી રૂપે નિકાસ અથવા કાયમી રૂપે તમારી રૂપરેખાંકન ફાઇલોમાં.
અન્ય ક્લાસિક છે ટાઇપોગ્રાફિકલ ભૂલો ચલને સુધારતી વખતે. લખો PAT ને બદલે PATH અથવા પાથ વચ્ચે કોલોન છોડી દેવાથી સિસ્ટમ મૂળભૂત આદેશો શોધવાનું બંધ કરી શકે છે. જ્યારે પણ તમે PATH ને ઍક્સેસ કરો છો, ત્યારે તેને `pth` સાથે ફરીથી બતાવવાનો વિચાર સારો છે. echo $PATH અને તપાસો કે કંઈ ખૂટતું નથી અને રૂટ યોગ્ય રીતે અલગ પડેલા દેખાય છે.
છેલ્લે, ફાઇલોને સંપાદિત કરતી વખતે ઉદ્ભવતા સંઘર્ષોનો ઉલ્લેખ કરવો યોગ્ય છે જેમ કે /etc/environment o /etc/profileપેકેજ અને સેવા વ્યાખ્યાઓને ધ્યાનમાં લીધા વિના સિસ્ટમ-સ્તરના PATH ને ઓવરરાઇટ કરવાથી બધા વપરાશકર્તાઓ માટે વાતાવરણ ખરાબ થઈ શકે છે. જો કંઈક ખોટું થાય તો ફેરફારોને પૂર્વવત્ કરવા માટે આ ફાઇલોને સંશોધિત કરતા પહેલા બેકઅપ લેવું લગભગ ફરજિયાત છે.
પર્યાવરણીય અને સુરક્ષા ચલો
આ પર્યાવરણીય ચલો તેનો ઉપયોગ ઘણીવાર ઓળખપત્રો અને સંવેદનશીલ ડેટા સંગ્રહિત કરવા માટે થાય છે, ખાસ કરીને તેમને કોડમાં સીધા દેખાતા અટકાવવા માટે. જો કે, આનો અર્થ એ નથી કે તે સંપૂર્ણપણે સુરક્ષિત સ્થાન છે: પર્યાવરણની ઍક્સેસ ધરાવતો કોઈપણ વપરાશકર્તા અથવા પ્રક્રિયા તેમને આદેશોનો ઉપયોગ કરીને જોઈ શકે છે જેમ કે આશરે o printenvઅથવા ડિબગીંગ ટૂલ્સ દ્વારા.
જોખમો ઘટાડવા માટે, સલાહ આપવામાં આવે છે કે મર્યાદા પરવાનગીઓ આ ચલો વ્યાખ્યાયિત થયેલ ફાઇલો વાંચવી, જેમ કે .bashrc અથવા ફાઇલો .envજેથી ફક્ત અધિકૃત વપરાશકર્તા જ તેમને ઍક્સેસ કરી શકે. આદેશો જેમ કે chmod 600 archivo તેઓ ખાતરી કરવામાં મદદ કરે છે કે અનધિકૃત તૃતીય પક્ષો સંવેદનશીલ સેટિંગ્સ વાંચી ન શકે.
તમારે એ પણ ધ્યાન રાખવું પડશે કે એપ્લિકેશનો તેમની આસપાસના વાતાવરણને ઉથલાવી નાખો ભૂલ થાય ત્યારે લોગમાં. જો કોઈ સેવા નિષ્ફળતા પર તેના સમગ્ર પર્યાવરણને છાપે છે, તો તે સિસ્ટમ લોગમાં API કી અથવા પાસવર્ડ ખુલ્લા છોડી શકે છે. લોગિંગ કરતા પહેલા તમારા ટૂલ્સના ડિફોલ્ટ વર્તનની સમીક્ષા કરવી અને માહિતી ફિલ્ટર કરવી એ સુરક્ષાનું એક સારું વધારાનું સ્તર છે.
CI/CD અને કન્ટેનરમાં PATH અને પર્યાવરણ ચલોની ભૂમિકા
આધુનિક સતત એકીકરણ (CI) અને સતત જમાવટ (CD) વાતાવરણમાં, તેમજ કન્ટેનર-આધારિત સિસ્ટમોમાં, લગભગ તમામ રૂપરેખાંકન આના દ્વારા કરવામાં આવે છે પર્યાવરણીય ચલોસામાન્ય પ્રથા છે કે, કન્ટેનર લોન્ચ કરતી વખતે, ડેટાબેઝ URL, વપરાશકર્તાઓ, પાસવર્ડ્સ અથવા એક્ઝેક્યુશન મોડ્સ જેવા મૂલ્યો કન્ટેનર ટૂલના વિકલ્પોમાંથી પસાર થાય છે.
આ પરિસ્થિતિઓમાં, ચલ પાથ કન્ટેનરમાં જરૂરી સાધનો અને દ્વિસંગીઓ સરળતાથી ચાલી શકે તેની ખાતરી કરવી પણ મહત્વપૂર્ણ છે. છબીઓ સામાન્ય રીતે તેમના પોતાના આંતરિક PATH ને વ્યાખ્યાયિત કરે છે, અને કેટલાક કિસ્સાઓમાં, વધારાના ઘટકો ઇન્સ્ટોલ કરતી વખતે આને સમાયોજિત કરવાની જરૂર છે જે ગમે ત્યાંથી સુલભ હોવા જોઈએ.
CI/CD પ્લેટફોર્મ તમને પ્રોજેક્ટ, જોબ અથવા પર્યાવરણ (સ્ટેજીંગ, પ્રોડક્શન, વગેરે) દ્વારા પર્યાવરણ ચલોને વ્યાખ્યાયિત કરવાની પણ મંજૂરી આપે છે. આ કોડ અને રૂપરેખાંકનને અલગ કરવાની ફિલસૂફી સાથે સંપૂર્ણ રીતે બંધબેસે છે, અને તે સમાન સંકલન આર્ટિફેક્ટનો ફરીથી ઉપયોગ કરવાનું સરળ બનાવે છે. રનટાઇમ પર ઇન્જેક્ટ કરાયેલા ચલોને જ બદલી રહ્યા છીએ.
ના સંચાલનમાં નિપુણતા મેળવવી Linux માં PATH અને બાકીના પર્યાવરણ ચલો તે તમને સમજવાની મંજૂરી આપે છે કે જ્યારે તમે આદેશ ચલાવો છો ત્યારે ખરેખર શું થઈ રહ્યું છે, તમારા કાર્યકારી વાતાવરણને કેવી રીતે ગોઠવવામાં આવે છે, સિસ્ટમ પસંદગીઓ ક્યાં વ્યાખ્યાયિત કરવામાં આવે છે, અને તમારી સ્ક્રિપ્ટો અને એપ્લિકેશનોને વધુ પોર્ટેબલ, સુરક્ષિત અને જાળવવા માટે સરળ કેવી રીતે બનાવવી; ત્યાંથી, પાથને સમાયોજિત કરવા, એક્ઝિક્યુટેબલ ઉમેરવા, અથવા નિદાન કરવું કે શા માટે કંઈક "મળી શકતું નથી" તે કાળો જાદુ નથી અને તમારા પર્યાવરણમાં શું વ્યાખ્યાયિત થયેલ છે અને તે કેવી રીતે વારસામાં મળી રહ્યું છે તેની સમીક્ષા કરવાનો વિષય બની જાય છે.