Hook VPN yang mengeksport titik akhir API mengubah persekitaran proses yang dimulakannya, bukan terminal yang sudah terbuka semasa terowong naik. Satu perbezaan itulah yang menjelaskan kebanyakan laporan „alat masih memanggil titik akhir awam“. Terdapat dua tempat yang boleh dilaksanakan untuk tetapan ini, dan pilihan bergantung pada siapa yang menggunakannya dan berapa kerap ia berubah. Bandingkan kedua-duanya sebelum menambah skrip permulaan lain.

Dua tempat tetapan boleh hidup

Pilihan pertama ialah awalan pada perintah itu sendiri: nilainya wujud untuk satu seruan itu dan hilang bersamanya. Pilihan kedua ialah eksport di dalam hook sambungan, yang sampai kepada setiap proses yang dimulakan hook selepas titik itu. Kedua-duanya berbeza dari segi jangkauan dan jangka hayat, bukan sintaksis, dan perbezaan itulah yang menentukan kebanyakan kegagalan.

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

Jadual itu membuat hook kelihatan murah dan menyembunyikan bil sebenar: ia juga memilih titik akhir peribadi untuk perintah yang tiada kaitan dengan tugasan. Baca setiap baris sebagai kekangan, bukan keutamaan. Jika titik akhir berubah mengikut tugasan, awalan menang dari segi ketepatan walaupun ia memerlukan satu tekanan kekunci.

Mengapa hook tidak dapat mencapai shell yang sudah terbuka

Pemboleh ubah persekitaran diserahkan kepada proses apabila imej proses dicipta. Shell yang bermula sebelum sambungan menyimpan salinan yang diterimanya, dan eksport yang dijalankan di dalam hook bukan siaran kepada setiap proses pada mesin. Hanya anak hook sendiri yang mewarisinya. Anak shell sendiri mengambil apa yang dipegang shell pada saat mereka bermula, dan sebab itulah perintah yang sama boleh berfungsi di satu terminal dan gagal di terminal lain.

Perkara yang sama berlaku kepada editor grafik. Hos sambungannya, terminal bersepadu dan pelayan bahasa latar belakang bercabang semasa pelancaran dan menyimpan salinan sendiri. Membuka semula folder tidak semestinya memulakan semula anak itu, jadi tetapan yang anda tambah tetap tidak pernah sampai.

Ujian paling murah ialah mencetak pemboleh ubah dari tempat yang gagal, bukan dari shell yang berfungsi. Jika proses yang gagal bermula sebelum terowong, eksport itu tidak pernah mempunyai peluang.

Bentuk bagi setiap perintah, ditulis

Awalan mengekalkan pilihan kelihatan dalam perintah yang menggunakannya, yang membantu apabila titik akhir berubah antara tugasan:

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

Perintah ini hanya ilustrasi: my-work-tool ialah pemegang tempat dan INTERNAL_API bukan piawaian VPN, jadi gantikan dengan tetapan berdokumen program yang benar-benar anda jalankan dan hos anda yang diluluskan. Jangan letak token atau kata laluan pada baris yang sama, kerana ia masuk ke sejarah shell.

Apabila beberapa perintah tergolong dalam satu tugasan, skrip pembalut pendek yang disemak menetapkan pemboleh ubah dan kemudian memulakannya. Ini mengekalkan satu definisi tanpa menjadikan nilai itu global untuk setiap perintah masa depan di terminal.

Muat semula, mulakan semula, atau biarkan

Untuk alat yang sudah berjalan, utamakan muat semula atau profil ruang kerjanya sendiri jika ada. Jika tidak, simpan kerja dan mulakan semula komponen yang membaca tetapan, yang selalunya pelayan bahasa dan bukan tetingkap editor. Memulakan semula tetingkap sambil menganggap proses anak mengikutinya ialah sebab muat semula kelihatan tidak berfungsi.

Pemutusan sambungan ialah keputusan berasingan. Menjeda, menutup atau menyambung semula adalah urusan aplikasi, dan pemboleh ubah titik akhir tidak mengawalnya. Anggap pemboleh ubah itu sebagai konfigurasi yang memilih alamat, bukan sebagai peraturan tentang trafik rangkaian mana yang boleh digunakan selepas itu, dan kedua-dua perkara itu kekal berasingan.

Artikel berkaitan