উত্তর:
লিনাক্স, ইউনিক্স এবং সম্পর্কিত অপারেটিং সিস্টেমে .
বর্তমান ডিরেক্টরিটি চিহ্নিত করে। যেহেতু আপনি আপনার বর্তমান ডিরেক্টরিতে একটি ফাইল চালাতে চান এবং সেই ডিরেক্টরিটি আপনার নেই $PATH
, ./
তাই এক্সিকিউটেবলটি কোথায় রয়েছে তা শেলটি বলার জন্য আপনাকে কিছুটা প্রয়োজন । সুতরাং, এর ./foo
অর্থ এক্সিকিউটেবল নামে চালিত যা foo
এই ডিরেক্টরিতে রয়েছে।
আপনার যে কোনও কমান্ড পাওয়া যায় তার পুরো পাথ আপনি ব্যবহার করতে type
বা which
পেতে পারেন $PATH
।
alias
পেতে পারে না $PATH
।
.
প্রথমে অনুসন্ধান করা হয় তবে এটি একটি সুরক্ষা সমস্যা হবে, আপনি বা অন্য কেউ ls
উদাহরণস্বরূপ প্রতিস্থাপন করতে পারেন (একটি সাধারণ ভাইরাস / ট্রোজেন: এতে একটি এক্সিকিউটেবল নামের একটি জিপ ফাইল তৈরি করুন ls
, যেহেতু কেউ অনুসন্ধান করছে , তারা এই নির্বাহযোগ্য চালায়, যে…)। যদি এটি .
সর্বশেষে অনুসন্ধান করে থাকে তবে আপনি কেন আপনার প্রোগ্রামটি কাজ করছে না তা না জানার জন্য আপনি দীর্ঘ সময় ব্যয় করতে পারেন (যেমন আপনি পরীক্ষা নামে একটি প্রোগ্রাম তৈরি করেন, আপনার প্রোগ্রাম চালানোর পরিবর্তে এটি সিস্টেম পরীক্ষা প্রোগ্রাম চালায় Which যা কোনও আউটপুট দেয় না)।
export PATH="$PATH:."
PATH- তে অন্য কোথাও পাওয়া না গেলে আপনি বর্তমান ডিরেক্টরিতে কমান্ড কার্যকর করতে এক্সিকিউট করতে পারেন, এটি আপনার .bashrc ফাইলটিতে যুক্ত করতে পারেন
আক্ষরিক উত্তরটি অন্যরা যেমন দিয়েছে তেমন: কারণ বর্তমান ডিরেক্টরিটি আপনার মধ্যে নেই $PATH
।
তবে কেন? সংক্ষেপে, এটি সুরক্ষার জন্য। যদি আপনি অন্য কারও হোম ডিরেক্টরি (বা / টিএমপি) সন্ধান করছেন, এবং কেবল টাইপ করুন gcc
বা ls
, আপনি জানতে চান আপনি প্রকৃতটি চালাচ্ছেন, আপনার প্রানস্টার বন্ধু লিখেছেন এমন কোনও দূষিত সংস্করণ নয় যা আপনার সমস্ত ফাইল মুছে ফেলে। অন্য উদাহরণটি হ'ল test
বা [
, যা শেল স্ক্রিপ্টগুলিতে এই কমান্ডগুলিকে ওভাররাইড করতে পারে , যদি আপনার শেলটিতে বিল্ট-ইনগুলি না থাকে।
রয়ে .
যেমন গত আপনার পাথ এন্ট্রি একটু নিরাপদ, তবে অন্যান্য আক্রমণের যা ব্যবহার করতে হয়। একটি সহজ হ'ল সাধারণ টাইপগুলি যেমন, sl
বা তেমন ব্যবহার করা ls-l
। অথবা, একটি সাধারণ কমান্ড সন্ধান করুন যা এই সিস্টেমে ইনস্টল করা না হতে পারে - vim
উদাহরণস্বরূপ, যেহেতু সিসাদমিনগুলি টাইপ করার সম্ভাব্যতা উচ্চ-গড়ের।
PATH
পরিবেশের পরিবর্তনশীল মধ্যে কেবল নিখুঁত পাথ রয়েছে ।
যদি আপনি বোঝাতে চান তবে আপনার কেন / at শুরুতে দরকার - কারণ এটি (উইন্ডোজের বিপরীতে), বর্তমান ডিরেক্টরিটি ডিফল্টরূপে আপনার পথের অংশ নয়। আপনি যদি চালান:
$ ls
আপনার শেল ls
আপনার PATH এনভায়রনমেন্ট ভেরিয়েবলের ডিরেক্টরিতে echo $PATH
এটি দেখতে ( এটি দেখতে), এবং এটি প্রথম ls
খুঁজে পাওয়া এক্সিকিউটেবল চালায় । আপনি যদি টাইপ করেন:
$ a.out
শেলটি একইভাবে করবে - তবে এটি সম্ভবত a.out নামে একটি এক্সিকিউটেবল খুঁজে পাবেন না। আপনাকে শেলটি বলতে হবে যেখানে আউট আউট রয়েছে - এটি বর্তমান ডিরেক্টরিতে (।) এর পরে পথটি রয়েছে ./a.out
।
যদি আপনি এটি "a.out" কেন বলা হয় তা যদি জিজ্ঞাসা করেন তবে এটি সিসিএসির জন্য কেবলমাত্র ডিফল্ট আউটপুট ফাইলের নাম। আপনি এটি -o কমান্ড লাইন আরগ দিয়ে পরিবর্তন করতে পারেন। উদাহরণ স্বরূপ:
$ gcc test.c -o test
$ ./test
touch .a.out; ls -lA
এটি দেখার চেষ্টা করুন ))
<dir>/<file>
তাই আপনি মূলত বর্তমান ডিরেক্টরিতে একটি ফাইল সম্পাদন করতে বলছেন, যা দ্বারা নির্দেশিত হয়েছে./test
আপনি :.
আপনার AT PATH ভেরিয়েবল যুক্ত করার চেষ্টা করতে পারেন ।
ALT + F2 ব্যবহার করে টাইপ করুন: gksudo gedit /etc/environment
লিনাক্স / জিটিকে চালিয়ে থাকলে (উবুন্টু ব্যবহার করা থাকলে এটি আপনার কাছে রয়েছে)।
তবুও, আমি দৃ strongly়ভাবে আপনাকে তা না করার পরামর্শ দিচ্ছি। এটা খারাপ খারাপ খারাপ এবং খারাপ।
আপনি জানেন যে, 1970 সালের পর থেকে এই ধরণের জিনিসগুলি এই জাতীয়ভাবে কাজ করে directory বর্তমান ডিরেক্টরিটি $ পাথের অন্তর্ভুক্ত না করার একটি কারণ রয়েছে।
.
বর্তমান ডিরেক্টরি
.something
এটি একটি লুকানো ফাইল (নটিলাসে উপস্থিত হতে "ALT +" টাইপ করুন বা " ls -la
" চেষ্টা করুন ।
./someProgram.sh
আপনি কি RUN টাইপ করেন বর্তমান ডিরেক্টরীতে এক্সিকিউটেবল سومরগ্রাম.শ।
.somethingElse
এর অর্থ হ'ল বর্তমান ডিরেক্টরিতে আপনার একটি লুকানো এক্সিকিউটেবল রয়েছে, যা একটি খারাপ ধারণা।
./command_name
কোনও কমান্ড চালানোর জন্য আমরা কেন ব্যবহার করব ?" হিসাবে প্রথম পংক্তিটি আরও ভালভাবে লেখা যায় না ?