ব্যবহারকারী বনাম সিস্টেম এনভায়রনমেন্ট ভেরিয়েবলগুলি: সিস্টেম ভেরিয়েবলগুলি কি ব্যবহারকারী ভেরিয়েবলগুলিকে ওভাররাইড করে?


21

আমি আমার ল্যাপটপে অধিকার উন্নীত করেছি তবে প্রশাসকের অধিকারগুলি নয়। সিস্টেম এনভায়রনমেন্ট ভেরিয়েবলগুলি সংশোধন করতে প্রশাসনিক অধিকারগুলি প্রয়োজন। আমি প্রত্যাশা করেছিলাম যে আমি যদি সিস্টেম এনভায়রনমেন্ট ভেরিয়েবল হিসাবে একই নামের সাথে একটি ইউজার এনভায়রনমেন্ট ভেরিয়েবল তৈরি করি তবে ইউজার ভেরিয়েবল সিস্টেম ভেরিয়েবলকে ওভাররাইড করতে পারে তবে এটি এরূপ বলে মনে হয় না।

সিস্টেম ভেরিয়েবল হিসাবে একই নামের ব্যবহারকারী ভেরিয়েবল যুক্ত করার পরে, আমি একটি নতুন সিএমডি উইন্ডো খুললাম এবং ভেরিয়েবলটি প্রদর্শন করতে ইকো কমান্ডটি ব্যবহার করেছি । এটি আমাকে ব্যবহারকারী ভেরিয়েবলের মানের পরিবর্তে সিস্টেম ভেরিয়েবলের মান দেখায়।

আমি কেবল এটি প্রত্যাশিত আচরণটি নিশ্চিত করতে চেয়েছিলাম এবং এর পিছনে যুক্তিটি বুঝতে পেরেছি। আমি প্রত্যাশা করব যে আরও নির্দিষ্ট ব্যবহারকারী সেটিংসটি সিস্টেমটিকে ওভাররাইড করবে।

আমার উইন্ডোজ 7 আছে।


আপনি যখন ভেরিয়েবল পরিবর্তন করেন আপনার প্রায়শই উইন্ডোজ সম্পূর্ণরূপে পুনঃসূচনা করতে হয়। সেটিংসে কোনও ভেরিয়েবল পরিবর্তন করা চলমান প্রক্রিয়াগুলিকে পরিবর্তন করবে না। নতুন প্রক্রিয়াগুলি চলমান প্রক্রিয়াগুলি থেকে পরিবেশের অনুলিপি করে (তারা কীভাবে শুরু হয় তার উপর নির্ভর করে), সুতরাং কেবল একটি প্রক্রিয়া শুরু করার অর্থ এই নয় যে আপনি একটি নতুন পরিবেশ পাবেন।
জোড়দাছে

আমি রিবুট করেছি এবং এখনও যখন আমি একটি সিএমডি.এক্সি উইন্ডো থেকে "প্রতিধ্বনিত%%%" চালাই, এটি আমার সিস্টেম এনভির ভেরিয়েবলটি প্রদর্শন করে, ব্যবহারকারীর ভেরিয়েবলের মান নয়। সুতরাং, আমি ব্যবহারকারীর ভেরিয়েবলটি মুছে ফেললাম, হে অ্যাডমিন অ্যাক্সেস, আমার সিস্টেমের পাথের পরিবর্তনশীল পরিবর্তন করে এবং একই প্রতিধ্বননীয় সেন্টিমিটার করেছি। আপডেট করা env মানটি ডাব্লু / ও রিবুট প্রদর্শিত হয়েছিল। এটি আমাকে জানিয়েছে যে ইউএসএল ওয়ারগুলি সিস্টেম ওয়ারগুলি ওভাররাইড করে না এবং একটি রিবুট প্রয়োজনীয় নয় necessary Neitehr আমি প্রত্যাশা কি।
চাদ

সিস্টেম ভেরিয়েবল হিসাবে একই নামের ব্যবহারকারী ভেরিয়েবল যুক্ত করার জন্য কোন পদ্ধতি ব্যবহার করা হয় ? এরকম কিছু ?
জোসেফজেড

জোসেফজেড: হ্যাঁ, আমি দুটি এনভায়রনমেন্ট ভেরিয়েবল যুক্ত করেছি, একজন ইউএসআই অন্য সিস্টেম, উভয়টি একই নামের সাথে উইন্ডোজ G জিইউআই ব্যবহার করে আপনার পাতায় অন্তর্নিহিত লিঙ্কটি ব্যবহার করে।
চাদ

@ চাদ উত্তরটি আপনার অভিজ্ঞতার ঠিক বিপরীতে গ্রহণ করা হয়নি? তাত্পর্যটি কীভাবে ব্যাখ্যা করবেন?
রকপ্যাপারলিজার্ড

উত্তর:


25

উইন্ডোজ এনটি-তে এমএসকেবি নিবন্ধ অনুযায়ী পরিবেশগত পরিবর্তনশীল :

ব্যবহারকারী পরিবেশের ভেরিয়েবল .... সিস্টেম এনভায়রনমেন্ট ভেরিয়েবলের চেয়ে অগ্রাধিকার নিন।

একটি উল্লেখযোগ্য ব্যতিক্রম PATHপরিবর্তনশীল যা সিস্টেম এবং ব্যবহারকারী ভেরিয়েবলগুলির সম্মিলিত ফলাফল:

পাথটি সিস্টেম পাথ থেকে তৈরি করা হয়, যা সিস্টেম ডায়ালগ বাক্সের সিস্টেম পরিবেশ পরিবর্তনশীল ক্ষেত্রে দেখা যায়। ব্যবহারকারী পাথ সিস্টেমের পথে সংযুক্ত করা হয়।

নিবন্ধটি সম্প্রসারণের অভিন্ন ব্যতিক্রম আলোচনা LibPathএবং Os2LibPathকিভাবে নির্দিষ্ট ঐ সেইসাথে ভেরিয়েবল autoexec.batপরিচালনা করা হয়। এই পয়েন্টগুলি আজকের সাধারণ পরিবেশে সামান্য প্রাসঙ্গিকতার সন্ধান করতে পারে।

এই SO উত্তরের ক্রেডিট


2
সিস্টেমের পাথটিকে প্রিডেন্ডিং করা কি ব্যবহারকারী পাথ তৈরি করা সম্ভব?
কিওয়ার্টি

3

টুইস্টি ইমপারসোনেটর তাদের উত্তরে যা বলেছিল তা সবই সঠিক। ব্যবহারকারী পাথের পরিবর্তনশীল সংযোজনীয় এই ধারণাটি হাইলাইট করা হয়েছে এবং আমি বিশ্বাস করি যে এই পার্থক্যের পরিণতিতে কিছু অতিরিক্ত চিকিত্সার প্রয়োজন।

পাথ =% পাথ% (সিস্টেম); % পাথ% (ব্যবহারকারী)

যখন আপনি একটি এক্সিকিউটেবল প্রোগ্রাম (বা যে কোন এক্সিকিউটেবল স্ক্রিপ্ট, যেমন চালানো .bat, .vbsইত্যাদি) আপনি সম্পূর্ণরূপে যোগ্যতাসম্পন্ন পথ প্রদান করতে হবে না।

উদাহরণস্বরূপ, চালানোর জন্য java, আপনি এগুলির যে কোনওটিতে টাইপ করতে পারেন:

C:/Program Files (x86)/Java/jre6/bin/java -version

java.exe -version

java -version

প্রথম উদাহরণটিতে সম্পূর্ণরূপে যোগ্য পথ ব্যবহার করা হয়েছে। এটি সর্বদা সেই সঠিক পথে জাভাটির সংস্করণ ব্যবহার করবে।

দ্বিতীয় উদাহরণটি %Path%এনভায়রনমেন্ট ভেরিয়েবলের প্রতিটি ডিরেক্টরিতে গিয়ে একটি এক্সিকিউটেবল ফাইলের সন্ধান করবে java.exe। এটি পাওয়া যায় এমন প্রথমটি চালাবে এবং অনুসন্ধান বন্ধ করবে। যদি java.exeকোথাও কোথাও দু'টি ফাইলের নামকরণ করা হয় %Path%তবে পাওয়া যায় এমন প্রথমটি ব্যবহৃত হয়।

দ্বিতীয়টির মতো তৃতীয় উদাহরণটি তালিকাভুক্ত ডিরেক্টরিগুলি পুনরাবৃত্তি করবে %Path%। অতিরিক্ত হিসাবে, একটি ফাইল এক্সটেনশান সরবরাহ করা হয়নি, তাই %PATHEXT%পরিবেশগত পরিবর্তনশীল নির্দিষ্ট ক্রমে ফাইলের নামের সাথে এক্সিকিউটেবল ফাইল এক্সটেনশনের একটি তালিকা যুক্ত করা হয় । বিভিন্ন নামে ফাইল থাকে তাহলে java.com, java.exe, java.bat, ইত্যাদি কোথাও %Path%, কেবলমাত্র প্রথম এমন একজনের সাক্ষাত পেলেন ব্যবহার করা হয়।

নিম্নলিখিত ব্যাচ ফাইল তৈরি করে আপনি আপনার সিস্টেমে এক্সিকিউটেবল পাথ এক্সটেনশনের তালিকা দেখতে পারেন:

@echo off
echo %PATHEXT%
pause

আমার মেশিনে, এগুলি হ'ল:

.COM; .EXE; .bat; .CMD; .VBS; .VBE; .js; .JSE; .WSF; .WSH; .MSC; .PY

এই সব কি মানে?

ইন সম্পূর্ণ বিপরীতে অন্যান্য এনভায়রনমেন্ট ভেরিয়েবল করতে, ব্যবহারকারি পথ আপনি সিস্টেম পাথ ওভাররাইড করতে অনুমতি দেয় না। হুবহু বিপরীত ক্ষেত্রে। উপরের উদাহরণগুলি থেকে, এমন অনেকগুলি মামলা রয়েছে যেখানে আপনি জাভার ডিফল্ট সংস্করণ পরিবর্তন করতে পারেন। তবে, যদি ইতিমধ্যে সিস্টেমের পথে কোনও জাভা সংস্করণ তালিকাভুক্ত থাকে তবে সেই সংস্করণটি সর্বদা খুঁজে পাওয়া যাবে কারণ পথটি বাম থেকে ডানে ডানদিকে অনুসন্ধান করা হয়েছে এবং ব্যবহারকারীর পাথটি ডানদিকে সংযুক্ত করা হয়েছে first - বামদিকে সিস্টেমের পথ সহ।

আমি এটি সম্পর্কে কি করতে পারি?

আপনার যদি সিস্টেম এনভায়রনমেন্ট ভেরিয়েবলের অ্যাক্সেস না থাকে তবে আপনি ব্যবহারকারী পাথ ব্যবহার করে সিস্টেমের পথে ডিফল্ট প্রোগ্রামগুলিকে ওভাররাইড করতে পারবেন না। (আসলে, এটি অবশ্যই এইভাবেই হবে, বা নির্দিষ্ট কিছু প্রোগ্রাম সঠিকভাবে কাজ করা বন্ধ করবে এবং এটি আপনার সিস্টেমকে দূষিত সফ্টওয়্যার দ্বারা ছলনার জন্য উন্মুক্ত করবে। কেউই এটি চায় না wants)

পরিবর্তে, আপনি অবশ্যই একটি নির্দিষ্ট সংস্করণ ব্যবহার করতে হবে তবে আপনাকে অবশ্যই একটি সম্পূর্ণ যোগ্য পাথ ব্যবহার করতে হবে।


1
সিস্টেমের পাথটিকে প্রিডেন্ডিং করা কি ব্যবহারকারী পাথ তৈরি করা সম্ভব?
কিওয়ার্টি

1
এটি একটি ভিন্ন প্রশ্নের ভাল বিষয় হবে would (এই সাইটে একটি তাত্ক্ষণিক অনুসন্ধান তত্ক্ষণাত প্রাসঙ্গিক কিছু প্রকাশ পায় নি।) দয়া করে একটি নতুন প্রশ্ন জিজ্ঞাসা করতে নির্দ্বিধায়, এবং মন্তব্যগুলিতে এখানে একটি লিঙ্ক পোস্ট করুন!
JonathanDavidArndt
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.