"AT পথ" এবং "~ / বিন" কী কী? আমি কীভাবে ব্যক্তিগত স্ক্রিপ্টগুলি রাখতে পারি?


29

কী $PATH?

আমার কাছে কেবলমাত্র উপলব্ধ কমান্ড / প্রোগ্রামগুলি কীভাবে থাকতে পারে?
আমি ~/binআগে উল্লিখিত এই পথটি দেখেছি , তবে এটি কীসের জন্য ব্যবহৃত হয় এবং আমি কীভাবে এটি ব্যবহার করব?


আমি কিছুটা পরীক্ষা নিরীক্ষা করছি কারণ এটি একটি "আসল প্রশ্ন" এর চেয়ে FAQ বা উইকি উপাদান বেশি। এটি অনুরোধ করা হয়েছিল কারণ আমি পূর্বের উত্তরে ~ / বিন উল্লেখ করেছি (ডানদিকে সংযুক্ত সাইডবারে) এবং কেউ কীভাবে এটি PATH এ যুক্ত করবেন সে সম্পর্কে মন্তব্য করেছিলেন: এখন সংক্ষিপ্ত মন্তব্যের পরিবর্তে আমরা এই পোস্টে লিঙ্ক করতে পারি যখন ~ / বিন হয় উল্লিখিত.

উত্তর:


26

AT PATH হ'ল পরিবেশগত পরিবর্তনশীল যা কমান্ড দেখার জন্য ব্যবহৃত হয়। ~ হ'ল আপনার হোম ডিরেক্টরি, সুতরাং bin / বিন / হোম / ব্যবহারকারী / বিন হবে; এটি একটি সাধারণ ডিরেক্টরি।

উদাহরণস্বরূপ, আপনি যখন কোনও শেলের মধ্যে "ls" চালান, আপনি আসলে / বিন / এলএস প্রোগ্রামটি চালান; আপনার সিস্টেম কনফিগারেশনের উপর নির্ভর করে সঠিক অবস্থানটি পৃথক হতে পারে। এটি ঘটে কারণ / বিন আপনার $ PATH এ রয়েছে।

পাথটি দেখতে এবং নির্দিষ্ট কোনও আদেশ কোথায় রয়েছে তা সন্ধান করতে:

$ echo $PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:...
$ which ls     # searches $PATH for an executable named "ls"
/bin/ls
$ ls           # runs /bin/ls
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...
$ /bin/ls      # can also run directly
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...

আপনার নিজস্ব প্রাইভেট বিন ডিরেক্টরি থাকতে আপনার এটিকে কেবল পথে যুক্ত করতে হবে। নীচের লাইনগুলিকে অন্তর্ভুক্ত করতে ~ / .profile (একটি লুকানো ফাইল) সম্পাদনা করে এটি করুন। যদি লাইনগুলি মন্তব্য করা হয়, তবে আপনাকে কেবল এগুলি অসুবিধা করতে হবে; যদি তারা ইতিমধ্যে সেখানে থাকে, আপনি প্রস্তুত!

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ]; then
  PATH="$HOME/bin:$PATH"
fi

এখন আপনাকে আপনার ~ / bin ডিরেক্টরি তৈরি করতে হবে এবং, কারণ প্রোফাইলটি লগইন চলাকালীন এবং only / বিনটি যুক্ত করে যদি সেই সময়ে উপস্থিত থাকে, আপনাকে আপডেট করা PATH দেখতে আপনাকে আবার লগইন করতে হবে।

আসুন এটি পরীক্ষা করে দেখুন:

$ ln -s $(which ls) ~/bin/my-ls   # symlink
$ which my-ls
/home/user/bin/my-ls
$ my-ls -l ~/bin/my-ls
lrwxrwxrwx 1 user user 7 2010-10-27 18:56 my-ls -> /bin/ls
$ my-ls          # lookup through $PATH
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...
$ ~/bin/my-ls    # doesn't use $PATH to lookup
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...

3
এটি ব্যবহার করার সময় একটি বিষয় লক্ষ্য রাখতে হবে যে এটি কেবলমাত্র ফাইল সিস্টেমে বাইনারি রয়েছে এমন কমান্ডগুলি খুঁজে পেতে পারে, এটি শেল বিল্টিন, উপাধি বা ফাংশনগুলির প্রতিবেদন করে না। typeপ্রকৃত কমান্ড কীভাবে শেল দ্বারা সমাধান করা হবে তা দেখতে প্রায়শই এটি ব্যবহার করা আরও কার্যকর হয় ; উদাহরণস্বরূপ: which echoএবং type echoবিভিন্ন জিনিস প্রতিবেদন করবে, which'/ বিন / প্রতিধ্বনি' দেয় তবে 'টাইপ' রিটার্ন দেয় যে এটি শেল বিল্টিন, যা শেলটি '/' বিনাতে ফাইলের চেয়ে বেশি পছন্দ করবে।
স্টিভ বিটি

@ স্টিভ বিটি, +1 ইন্টারেক্টিভ শেল whichদ্বারা typeবা আরও ভাল প্রতিস্থাপন করা হয় command, এবং এটি স্ক্রিপ্টগুলিতে সম্পূর্ণ অকেজো।
গিরিহা

একটি বিষয় লক্ষণীয় যে আমি সবেমাত্র লক্ষ্য করেছি - কিছু কারণে $HOMEচলক $PATHকাজ করে না, অর্থাৎ ~পরিবর্তে সাইন ব্যবহার করতে হবে।
হাই-এঞ্জেল

19

সংক্রান্ত ~/binএবং শুধুমাত্র আপনার ব্যবহারকারী উপলব্ধ কমান্ড / প্রোগ্রাম

সাম্প্রতিক উবুন্টু সংস্করণগুলিতে ~/binডিরেক্টরিটি আপনার অন্তর্ভুক্ত করে $PATHতবে কেবল ~/binডিরেক্টরি উপস্থিত থাকলেই ।

এটি উপস্থিত না থাকলে:

  1. নিশ্চিত হয়ে নিন যে আপনার ~/.profileনিম্নোক্ত স্তবক রয়েছে (ডিফল্ট ~/.profileইতিমধ্যে তা করে):

    # set PATH so it includes user's private bin if it exists
    if [ -d "$HOME/bin" ] ; then
        PATH="$HOME/bin:$PATH"
    fi
    
  2. ~/binডিরেক্টরি তৈরি করুন :

    mkdir -p ~/bin
    
  3. হয় আপনার কম্পিউটারটি পুনরায় বুট করুন, বা বাশকে পুনরায় পড়তে বাধ্য করুন ~/.profile:

    exec -l bash
    

"রিবুট বা exec -l bash" টিপসের জন্য ধন্যবাদ । কী -lপতাকা না? আমি কোন ব্যাখ্যা খুঁজে পাচ্ছি না man exec
evanrmurphy

3
exec -lলগইন শেল হিসাবে বাশ কার্যকর করবে [ wiki.bash-hackers.org/commands/builtin/exec] । সংক্ষেপে, এটি বাশকে পুনরায় পড়তে বাধ্য করে /etc/profileএবং ~/.profile। শুধু চলমান exec bashশুধুমাত্র পুনরায় পড়তে হবে ~/.bashrc
ড্যানিলো পিয়াজলুঙ্গা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.