`env <কম্যান্ড> is কি করছে?


37

কমান্ড কি env ls -alকরছে?

আমার একটি লিনাক্স পরীক্ষা ছিল এবং সেখানে একটি প্রশ্ন ছিল: "কমান্ড সরাসরি চালাবেন কীভাবে, তবে এটির নাম নেই?"
আমি জানতাম যে কিছু বিশেষ চিহ্ন সহ প্রিফিক্সিং কমান্ডের মতো সমাধান রয়েছে তবে আমি এটি ভুলে গেছি। এখন আমি জানি যে এটি \। ( এই পোস্ট থেকে পড়ুন )।

তবে আমি এটাও মনে রাখি যে কোথাও আমি পড়েছি যে উলামের হাত থেকে মুক্তি পেতে আমরা একটি কমান্ডের সাথে উপসর্গ করতে পারি env। আমি এটি করেছি এবং এটি কাজগুলি বলে মনে হচ্ছে, তবে আমার উত্তরটি ভুল হিসাবে যোগ্য ছিল। আমি পড়তে infoএবং manচালু env, কিন্তু খুব বেশি বুঝতে পারি না।

নিজের জন্য কোনও যুক্তি ছাড়াই কি envকরছে এবং ঠিক কী করছে ?env <command>env


একটি নোট, এই যে আমি হয় মনে করতে পারেন করছেন 3 টি উপায় হিসাবে env <command>, command <command>এবং \<command>। আমার মতে, কিছু পরীক্ষা env <command>যদি অবৈধ বলে থাকে, তবে সেই পরীক্ষাটি নষ্ট হয়ে গেছে।
প্যাট্রিক

@ পেট্রিক: এটি ভেঙে যায়নি কারণ ক্রিস যেমন বলেছিলেন, সেখানে একটি উলামের উত্তর থাকতে পারে commandবা envএটি কেবলমাত্র গ্রহণযোগ্য উত্তরই বানাবে।
পিয়ের আরলাড

1
@ আরলাউডপিয়ের এবং `\ pos পোজিক্সে বর্ণিত নয় (একটি উপনামের হাত থেকে মুক্তি), সুতরাং এটি বহনযোগ্য নয়। সুতরাং এটি অন্যদের চেয়ে বেশি গ্রহণযোগ্য নয়।
প্যাট্রিক

@ পেট্রিক: সত্য, সত্য। এটি বলতে এখন আমাদের পরীক্ষার সঠিক ঘেরটি জানতে হবে। তবে যে কোনও ক্ষেত্রে, খুঁজে নিন যে "এনভিভ" উত্তরটি গ্রহণযোগ্য নয়, খুব সৎ নয়, আমাকে তার সাথে আপনার সাথে একমত হতে হবে।
পিয়ের আরলাড

ছেলেরা, পরীক্ষাটি মানুষের দ্বারাও যাচাই করা হয়েছিল (এলপিআই-প্রত্যয়িত প্রাক্তন সিসাদমিন, যা এখন অন্যদের লিনাক্স পড়ায়) :) আমি যাচাইকারীর কাছে অভিযোগ করেছি, গিয়েছিলাম manএবং envঠিক কী করছে বুঝতে পারিনি । এই পোস্টের পরে - এটি পরিষ্কার এবং আমার উত্তর পর্যালোচনা করা হয়েছে (স্বীকৃত)) সবাইকে ধন্যবাদ!
ALZ

উত্তর:


38

এই আদেশ

env name=value name2=value2 program and args

কমান্ড সঞ্চালিত program and argsএকটি পরিবেশ এনভায়রনমেন্ট ভেরিয়েবল ও মূল্যবোধ দ্বারা মনোনীত বর্তমান পরিবেশ ব্যাপ্ত দ্বারা গঠিত সঙ্গে name=valueএবং name2=value2। আপনি যদি কোনও যুক্তি অন্তর্ভুক্ত না করেন name=valueতবে বর্তমান পরিবেশটি অবিস্মরণীয় হিসাবে পাশ করা হয়।

এলিয়াসের ক্ষেত্রে মূল বিষয়টিটি হ'ল এনভির একটি বাহ্যিক আদেশ, সুতরাং এটির উপকরণগুলির কোনও "জ্ঞান" নেই: এলিয়াসগুলি একটি শেল কনস্ট্রাক্ট যা সাধারণ প্রক্রিয়া মডেলের অংশ নয় এবং সরাসরি প্রোগ্রামগুলিতে কোনও প্রভাব ফেলে না are শেলবিহীন প্রোগ্রাম দ্বারা চালিত (যেমন এনভিও )। env কেবল পাসের program and argumentsএকটি থেকে Exec কল (মত execvp , যার জন্য পাথ অনুসন্ধান করবে program)।

মূলত, এনভির মতো ব্যবহার করা হ'ল (বেশিরভাগ) শেল-স্বতন্ত্র উপায় যা এ্যালিয়াস, শেল ফাংশন, শেল বিল্টিন কমান্ডগুলি এবং শেল কার্যকারিতার অন্য কোনও বিটগুলি এড়ানো যায় যা কমান্ড-পজিশনের আর্গুমেন্টকে (যেমন প্রোগ্রামের নাম) প্রতিস্থাপন বা ওভাররাইড করতে পারে - অবশ্যই, envএকটি উপনাম, বা শেল ফাংশন! যদি আপনি envএকটি উপনাম হওয়ার বিষয়ে উদ্বিগ্ন হন তবে আপনি পুরো পথটি বানান করতে পারেন (উদাহরণস্বরূপ /usr/bin/env, যদিও এটি পৃথক হতে পারে)।


24

env(কনক্রেন্টিং কমান্ড ওরফে লুকআপ বাদে) এর আরেকটি গুরুত্বপূর্ণ ব্যবহার হ'ল এটি PATHকমান্ডটির সন্ধান করে। এটির গুরুত্ব রয়েছে যেখানে পরম পাথের প্রয়োজন হয়, তবে সিস্টেম থেকে সিস্টেমে পরিবর্তিত হয়।

উদাহরণস্বরূপ, বাশ স্ক্রিপ্ট দিয়ে শুরু #!/bin/bashকরা ঠিক আছে, যদিও প্রতিটি যুক্তিসঙ্গত সিস্টেমে অন্তর্ভুক্ত #!bashথাকা সত্ত্বেও তা নেই ।/binPATH

আমি প্রায়শই পাইথন প্রোগ্রাম, যা সাধারণত দিয়ে শুরু এই সম্মুখীন #!/usr/bin/env pythonপূর্ণ, সিস্টেম নির্ভর পথ উল্লেখ এড়াতে pythonএক্সিকিউটেবল (নোট অবশ্য এটি এখনও প্রয়োজন envবাসভবন /usr/bin, এই তবে এ পর্যন্ত পাইথন অবস্থান চেয়ে বেশি দেখা যায় বাইনারি)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.