বাশ, সর্বদা পথের অংশ হিসাবে PWD পরীক্ষা করুন?


15

ব্যাকগ্রাউন্ড: আমার একজন সহকর্মী যিনি লিনাক্সের পটভূমি থেকে আসেননি তিনি আমাকে ./কিছু কমান্ডের আগে ব্যবহার করার বিষয়ে জিজ্ঞাসা করেছিলেন অন্যদের চেয়ে নয়, তাই আমি তাকে বুঝিয়ে দিয়েছিলাম কীভাবে কীভাবে PATHকাজ করা হয় এবং কীভাবে বাইনারিগুলি চালানোর জন্য বেছে নেওয়া হয়। তার প্রতিক্রিয়াটি ছিল যে এটি বোবা ছিল এবং তিনি কেবল ./আদেশগুলির আগে টাইপ করার দরকার পড়েনি।

প্রশ্ন: $PWDসর্বদা প্রথম আইটেম চালু থাকা শেলের আচরণ সহজেই সংশোধন করার কোনও উপায় আছে কি PATH?


বোবা এটি হতে পারে (বা নাও) হতে পারে তবে প্রতিটি পরিবেশে এটির স্নিগ্ধতা থাকে এবং এটি একটি ইউনিক্স শেল কিরক।
রন জন

12
এটি একটি সুরক্ষা ব্যবস্থা। শেল ব্যবহার ডিফল্টরূপে এই কাজ করতে (মনে 1970), এবং একাধিক ব্যবহারকারী সিস্টেম ব্যাপকভাবে এটা কারণে আক্রান্ত হয়।
চার্লস ডাফি

3
তাঁর প্রতিক্রিয়াটি ছিল যে এটি বোবা ছিল : বলেছেন সহকর্মীদের এই বিষয়টিতে তার নিজের জীবনকে শিক্ষিত করা দরকার। এই অফ-দ্য কাফ উত্তরটি পিএইচবি-স্টাইলের প্রতিক্রিয়া দেখায় : অন্তর্নিহিত সিস্টেমটির কোনও বোঝা বা উপলব্ধি নেই।
মেঘ

2
কেন শুধু বাইনারিগুলিকে ফেলে ~/binএটিকে একটি অংশ হিসাবে তৈরি করব না PATH? এটি জিনিসগুলিকেও সুসংহত রাখে।
সের্গেই কলডিয়াজনি

3
উইন্ডোজে জিয়াজিস, বর্তমান ডিরেক্টরি এটির অংশ নয় কিনা তা বিবেচনা করা হয় PATH(যা এই জাতীয় বিবেচনার স্বাভাবিক উত্স)।
স্টিফেন কিট

উত্তর:


55

আপনি যদি সত্যিই চান, আপনি .নিজের পথে প্রিপেন্ড করে এটি করতে পারেন :

export PATH=".:$PATH"

যাইহোক, এটি একটি খারাপ ধারণা, কারণ এর অর্থ আপনার শেল অন্যের চেয়ে পছন্দসই ডিরেক্টরিতে বর্তমান কমান্ডটি বেছে নেবে। আপনি যদি lsপ্রায়শই ব্যবহার করেন এমন ডিরেক্টরিতে যদি কেউ (বা কোনও প্রোগ্রাম) দূষিত কমান্ড ফেলে দেয় তবে আপনি সমস্যার মধ্যে পড়ছেন ...


13
এটি একটি দুর্দান্ত পয়েন্ট, যদিও এটি সরাতে যথেষ্ট হবে। পথের শেষে PATH = "$ PATH :." রফতানি করুন "
ক্রিস্টোফ

12
প্রকৃতপক্ষে আমি মনে করি .আপনার শুরুতে PATHহ'ল সাধারণ ব্যবহারকারীদের জন্য এটি ডিফল্ট ছিল (যদি আমি এইচপি-ইউএক্স-তে "সাম" দিয়ে ব্যবহারকারী তৈরি করি তবে কমপক্ষে; আমি পুরানো সানোএস সম্পর্কে নিশ্চিত নই)। পরে সুরক্ষার কারণে এই ডিফল্টটি সরানো হয়েছিল। আপনার যদি আপনার .শেষ আইটেম হিসাবে থাকে তবে PATHএখনও কেউ টাইপিকাল টাইপসের জন্য আশা করতে পারেন।
ফিলিপোস

6
@ ফিলিপোস, হ্যাঁ এই /tmp/slজাতীয় PATH ব্যবহারকারীদের টার্গেট করার জন্য কুখ্যাত প্রংক স্ক্রিপ্টগুলির মতো। ডেবিয়ান এবং ডেরিভেটিভগুলিতে, slআপনি কতবার slস্থানে টাইপ করেন তার একটি ধারণা পেতে প্যাকেজটি ইনস্টল করুন ls
স্টাফেন চেজেলাস

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

4
@ জামেস্কেফ, আসলে, ./আপনি বর্তমান ডিরেক্টরিতে কমান্ড কল করতে চাইলে টাইপ করা ভাল ধারণা । অথবা, যদি আপনার সাধারণ বর্তমান ডিরেক্টরি হয় /project/under/development/binতবে এটি আপনারটিতে যুক্ত করুন PATH। এটি আপনার বিকাশকারী ব্যবহারের কেস সমাধান করে। ফেলে .আপনার শুরুতে PATHএকটি খারাপ ধারণা, কাল নেই।
ওয়াইল্ডকার্ড

14

যদিও এটি আপনার প্রশ্নের সরাসরি উত্তর না হলেও সেরা অনুশীলনটি হ'ল একটি তৈরি করা bin আপনার হোম ডিরেক্টরিতে ডিরেক্টরি করা হবে /home/user/bin:

mkdir -p "$HOME/bin"
echo 'PATH="$HOME/bin:$PATH"' >> "$HOME/.bashrc"
source "$HOME/.bashrc"

আপনার ব্যক্তিগত স্ক্রিপ্টগুলি সেখানে রাখুন। PATHঅর্ডার আপনি এটা সংজ্ঞায়িত ছাড়া আপনার ব্যক্তিগত স্ক্রিপ্ট চালানো মধ্যে ভেদকরেখার হবে .না।


0

আপনার থাকা দরকার। আপনার PATH ভেরিয়েবলের শুরুতে:

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