কিভাবে একটি মেকফিলের মধ্যে শেল পরিবেশ পরিবর্তনশীল পাবেন?


106

শেল ইন যখন আমি প্রবেশ

echo $demoPath

এটি প্রিন্ট করে

/usr/local/demo

আমি কীভাবে $demoPathএকটি মেকফিলের মধ্যে এই পরিবর্তনশীলটির মান পেতে পারি ?

উত্তর:


163

আপনি যদি পরিবেশের পরিবর্তনশীল রফতানি করে থাকেন:

export demoPath=/usr/local/demo

আপনি কেবল এটিকে নাম দ্বারা উল্লেখ করতে পারেন makefile( makeআপনার সেট করা সমস্ত পরিবেশের ভেরিয়েবলগুলি আমদানি করে):

DEMOPATH = ${demoPath}    # Or $(demoPath) if you prefer.

আপনি যদি পরিবেশের পরিবর্তনশীল রফতানি না করে থাকেন তবে আপনি এটি রফতানি না করা অবধি অ্যাক্সেসযোগ্য নয় বা আপনি কমান্ড লাইনে স্পষ্টভাবে এটি পাস না করা পর্যন্ত:

make DEMOPATH="${demoPath}"

আপনি যদি সি শেল ডেরিভেটিভ setenv demoPath /usr/local/demoব্যবহার করেন তবে exportকমান্ডের বিকল্প দিন ।


4
"আপনার সেট করা সমস্ত পরিবেশের পরিবর্তনশীলগুলি আমদানি করুন"। এটি কাজ করে! ভাল ~, আমি এই সম্পর্কে আগে কোন ধারণা আছে, আপনাকে অনেক ধন্যবাদ।
জিয়ালিন

@ জোনাথন_এলফ্লার আমি আপনার উত্তরে অনুপ্রাণিত হয়েছি এবং কিছুটা আলাদা করেছি। আমি এটা রপ্তানি ছাড়া করতে কল করার আগে envvar সেট করুন: demoPath=/usr/local/demo make। আপনি এটি পরীক্ষা করে দেখতে এবং সম্ভবত আপনার উত্তর আপডেট করতে চাইতে পারেন। চিয়ার্স!
খ্রি

@ অ্যাড হ্যাঁ, নির্দিষ্ট কমান্ডের জন্য পরিবেশের পরিবর্তনশীলের জন্য মান নির্ধারণের জন্য এটি অন্য পদ্ধতি। এটি উড়ে একটি কীভাবে তৈরি করা যায় তার পরিবর্তে বিদ্যমান ভেরিয়েবলের মান কীভাবে অ্যাক্সেস করতে হয় তা জিজ্ঞাসা করা কিছুটা স্পর্শকাতর। এটি উপলক্ষে দরকারী কৌশল হিসাবে এটি থামায় না।
জোনাথন লেফলার

12

যারা আচরণের বিষয়টি নিশ্চিত করার জন্য কিছু অফিসিয়াল ডকুমেন্ট চান তাদের জন্য

মেক ইন ভেরিয়েবলগুলি এমন পরিবেশ থেকে আসতে পারে যেখানে মেক তৈরি হয়। প্রতিটি পরিবেশ পরিবর্তনশীল যা দেখতে শুরু করে তা একই নাম এবং মান সহ একটি মেক ভেরিয়েবলে রূপান্তরিত হয়। যাইহোক, মেকফাইলে একটি সুস্পষ্ট কার্যভার, বা কমান্ড আর্গুমেন্ট সহ পরিবেশকে ওভাররাইড করে। (যদি '-e' পতাকাটি নির্দিষ্ট করা থাকে, তবে পরিবেশ থেকে প্রাপ্ত মানগুলি মেকফিলের ওভাররাইড অ্যাসাইনমেন্টগুলিতে দেয়।

https://www.gnu.org/software/make/manual/html_node/Enomot.html


6
all:
    echo ${PATH}

বা কেবল একটি কমান্ডের জন্য PATH পরিবর্তন করুন:

all:
    PATH=/my/path:${PATH} cmd
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.