ভেরিয়েবলটি ধ্রুবক হওয়ার কথা (যা ব্যবহারকারীকে ইউনিট প্রাপ্তির মাধ্যমে সংশোধন করার কথা নয়) বা ভেরিয়েবল (ব্যবহারকারীর দ্বারা সেট করা উচিত বলে) নির্ভর করে answer
যেহেতু এটি আপনার স্থানীয় ইউনিট, সীমানাটি বেশ ঝাপসা এবং কোনওভাবেই কাজ করবে। তবে, আপনি যদি এটি বিতরণ শুরু করেন এবং এটি শেষ হয়ে যায় /usr/lib/systemd/system
, এটি গুরুত্বপূর্ণ হয়ে উঠবে।
ধ্রুবক মান
উদাহরণস্বরূপ মানটি যদি পরিবর্তনের প্রয়োজন না হয় তবে পছন্দসই উপায়টি এটি Environment=
ইউনিট ফাইলে সরাসরি স্থান দেওয়া :
[Unit]
Description=My Daemon
[Service]
Environment="FOO=bar baz"
ExecStart=/bin/myforegroundcmd
[Install]
WantedBy=multi-user.target
এর সুবিধা হ'ল ভেরিয়েবলটি ইউনিট সহ একটি একক ফাইলে রাখা হয়। সুতরাং, ইউনিট ফাইলটি সিস্টেমের মধ্যে সরানো সহজ।
পরিবর্তনশীল মান
যাইহোক, সিসাদমিন স্থানীয়ভাবে পরিবেশের পরিবর্তনশীলের মান পরিবর্তন করার কথা বলে যখন উপরের সমাধানটি ভালভাবে কাজ করে না। আরও সুনির্দিষ্টভাবে বলা যায় যে প্রতিবার ইউনিট ফাইল আপডেট হওয়ার সাথে সাথে নতুন মানটি সেট করা দরকার।
এই ক্ষেত্রে, একটি অতিরিক্ত ফাইল ব্যবহার করতে হবে। কীভাবে - সাধারণত বিতরণ নীতি উপর নির্ভর করে।
একটি বিশেষ আকর্ষণীয় সমাধান হ'ল /etc/systemd/system/myservice.service.d
ডিরেক্টরি ব্যবহার করা । অন্যান্য সমাধানগুলির বিপরীতে, এই ডিরেক্টরিটি নিজে নিজে সিস্টেমড দ্বারা সমর্থিত এবং তাই কোনও বিতরণ-নির্দিষ্ট পাথ নিয়ে আসে।
এই ক্ষেত্রে, আপনি /etc/systemd/system/myservice.service.d/local.conf
ইউনিট ফাইলের অনুপস্থিত অংশগুলি যুক্ত করে এমন একটি ফাইল রাখুন:
[Service]
Environment="FOO=bar baz"
এরপরে, সিস্টেমযুক্ত পরিষেবাটি চালু করার সময় দুটি ফাইলকে একত্রিত করে (তার মধ্যে দুটি systemctl daemon-reload
পরিবর্তনের পরে মনে রাখবেন )। এবং যেহেতু এই পথটি সরাসরি সিস্টেমড দ্বারা ব্যবহৃত হয়, আপনি এটির EnvironmentFile=
জন্য ব্যবহার করবেন না ।
যদি প্রভাবিত কিছু সিস্টেমে মানটি পরিবর্তন করা হয় বলে মনে করা হয় তবে আপনি উভয় সমাধান একত্রিত করতে পারেন, সরাসরি ইউনিটে একটি ডিফল্ট এবং অন্য ফাইলে একটি স্থানীয় ওভাররাইড সরবরাহ করে।
sysconfig
পথটি ফেডোরার জন্য নির্দিষ্ট তবে প্রশ্নটি আর্চ লিনাক্স সম্পর্কে। পালাহর উত্তরটি আমার কাছে আরও আকর্ষণীয় বলে মনে হয়