VPN კაუჭი, რომელიც API საბოლოო წერტილს ექსპორტს უკეთებს, ცვლის იმ პროცესების გარემოს, რომლებსაც ის უშვებს და არა იმ ტერმინალისას, რომელიც გვირაბის აწევისას უკვე გახსნილი იყო. ეს ერთი განსხვავება ხსნის „ინსტრუმენტი კვლავ საჯარო საბოლოო წერტილს იძახებს“ შეტყობინებების უმეტესობას. პარამეტრის ჩასადებად ორი სამუშაო ადგილი არსებობს და არჩევანი დამოკიდებულია იმაზე, ვინ მოიხმარს მას და რამდენად ხშირად იცვლება. შეადარეთ ისინი, სანამ კიდევ ერთ გაშვების სკრიპტს დაამატებთ.

ორი ადგილი, სადაც პარამეტრი შეიძლება ცხოვრობდეს

პირველი ვარიანტია პრეფიქსი თავად ბრძანებაზე: მნიშვნელობა მხოლოდ ამ ერთი გამოძახებისთვის არსებობს და მასთან ერთად ქრება. მეორე ვარიანტია ექსპორტი კავშირის კაუჭის შიგნით, რომელიც აღწევს ყველა პროცესს, რომელსაც კაუჭი ამ წერტილის შემდეგ უშვებს. ისინი განსხვავდებიან მოცვისა და სიცოცხლის ხანგრძლივობით და არა სინტაქსით, და ეს განსხვავება წყვეტს წარუმატებლობების უმეტესობას.

PropertyPrefix on the commandExport from the hook
Who receives itThat invocation onlyChildren the hook starts
LifetimeUntil the process exitsUntil the hook's own session ends
LeakageScoped to one commandApplies to later commands in that session
Repeat costEvery invocationOnce per connection
Works for an open editorNo, unless the editor is started with itNo

ცხრილი კაუჭს იაფად აჩვენებს და ნამდვილ ანგარიშს მალავს: ის პირად საბოლოო წერტილს ირჩევს იმ ბრძანებებისთვისაც, რომლებსაც ამოცანასთან კავშირი არ აქვთ. ყოველი სტრიქონი წაიკითხეთ როგორც შეზღუდვა და არა როგორც უპირატესობა. თუ საბოლოო წერტილი ამოცანიდან ამოცანაზე იცვლება, პრეფიქსი სიზუსტეში იმარჯვებს, თუნდაც ერთი კლავიშის დაჭერა დაჯდეს.

რატომ ვერ აღწევს კაუჭი უკვე გახსნილ ჭურვამდე

გარემოს ცვლადები პროცესს პროცესის გამოსახულების შექმნისას გადაეცემა. კავშირამდე დაწყებული ჭურვი მიღებულ ასლს ინახავს, და კაუჭის შიგნით შესრულებული ექსპორტი მანქანის ყველა პროცესისთვის გადაცემა არ არის. მას მხოლოდ კაუჭის საკუთარი შვილები მემკვიდრეობით იღებენ. ჭურვის საკუთარი შვილები იღებენ იმას, რაც ჭურვს მათი გაშვების მომენტში აქვს, და ამიტომ ერთი და იგივე ბრძანება ერთ ტერმინალში მუშაობს, მეორეში კი ვარდება.

იგივე ეხება გრაფიკულ რედაქტორს. მისი გაფართოებების ჰოსტი, ჩაშენებული ტერმინალი და ფონური ენის სერვერი გაშვებისას განშტოდნენ და საკუთარ ასლებს ინახავენ. საქაღალდის ხელახლა გახსნა ამ შვილებს აუცილებლად არ აახლებს, ამიტომ დამატებული პარამეტრი მაინც არასოდეს აღწევს.

ყველაზე იაფი შემოწმებაა ცვლადის დაბეჭდვა იმ ადგილიდან, სადაც ვარდება და არა იმ ჭურვიდან, რომელიც მუშაობს. თუ წარუმატებელი პროცესი გვირაბამდე დაიწყო, ექსპორტს შანსი არ ჰქონია.

ბრძანებაზე დაფუძნებული ფორმა, ჩამოწერილი

პრეფიქსი არჩევანს თვალსაჩინოს ტოვებს იმ ბრძანებაში, რომელიც მას იყენებს, რაც გვეხმარება, როცა საბოლოო წერტილი ამოცანებს შორის იცვლება:

env INTERNAL_API='https://internal-api.example.net:8443' my-work-tool

ბრძანება მხოლოდ საილუსტრაციოა: my-work-tool ადგილის შემავსებელია და INTERNAL_API VPN სტანდარტი არ არის, ამიტომ ჩასვით პროგრამის დოკუმენტირებული პარამეტრი, რომელსაც ნამდვილად ამუშავებთ, და თქვენი დამტკიცებული ჰოსტი. ნუ ჩასვამთ ნიშანს ან პაროლს იმავე სტრიქონში, რადგან ის ჭურვის ისტორიაში ხვდება.

როცა რამდენიმე ბრძანება ერთ ამოცანას ეკუთვნის, მოკლე გადამოწმებული შემოხვევის სკრიპტი აყენებს ცვლადებს და შემდეგ უშვებს მათ. ეს ინახავს ერთ განსაზღვრებას და მნიშვნელობას ტერმინალის ყველა მომავალი ბრძანებისთვის გლობალურად არ აქცევს.

თავიდან ჩატვირთეთ, გადატვირთეთ ან ისე დატოვეთ

უკვე მომუშავე ინსტრუმენტისთვის უპირატესობა მიანიჭეთ მისივე გადატვირთვას ან სამუშაო სივრცის პროფილს, თუ აქვს. წინააღმდეგ შემთხვევაში შეინახეთ სამუშაო და გადატვირთეთ კომპონენტი, რომელიც პარამეტრს კითხულობს, და ეს ხშირად ენის სერვერია და არა რედაქტორის ფანჯარა. ფანჯრის გადატვირთვა და იმის ვარაუდი, რომ შვილ პროცესებმა მას გაჰყვეს, სწორედ ის არის, რის გამოც გადატვირთვა ისე ჩანს, თითქოს არ მუშაობს.

გაწყვეტა ცალკე გადაწყვეტილებაა. პაუზა, დახურვა ან ხელახლა დაკავშირება აპლიკაციას ეკუთვნის, და საბოლოო წერტილის ცვლადი ამას არ აკონტროლებს. მოეპყარით ცვლადს როგორც კონფიგურაციას, რომელიც მისამართს ირჩევს და არა როგორც წესს იმის შესახებ, თუ რა ქსელური ტრაფიკის გამოყენება შეიძლება შემდეგ, და ორივე საკითხი განცალკევებადი რჩება.

დაკავშირებული სტატიები