সাথে স্ক্রিপ্ট চলমান “। "এবং" উত্স "সহ


26
  1. আমি ভাবছিলাম যে বাশ স্ক্রিপ্ট চালানোর জন্য নিম্নলিখিত দুটি উপায় সমান?

    . ./myScript.sh
    
    source myScript.sh
  2. তারা দুজনেই কি স্ক্রিপ্টটি চালানোর পরিবর্তে স্ক্রিপ্টের সামগ্রী চালাচ্ছে, অর্থাৎ স্ক্রিপ্টটি চালানোর জন্য সাবসেল তৈরি করছে না?

1
আরে, এটাই ম্যানপেজে!
অ্যালেক্স

@ আলেক্স: আমাকে দেখাবেন প্লিজ? man ., man sourceবা যা আমি এখনও জানি না।
টিম

2
দেখুন type .এবংhelp .
রোজিট্রিজেভিয়াকজ

man $SHELL,/source
অ্যালেক্স

4
অন্যদের মতে আরও পোর্টেবল
l0b0

উত্তর:


21
  1. তারা ঠিক একই জিনিসটি করে যে তারা বাশের সমতুল্য। অন্যদিকে, source5 টি অক্ষর দীর্ঘ এবং এটি পসিক্স-কেবল শেল বা বোর্নে যেখানে .(ডট) সেখানে বহনযোগ্য নয় , তাই আমি কখনও ব্যবহার করে বিরক্ত করি না source

  2. এটি সঠিক - একটি ফাইল সোর্সিং বর্তমান শেলের কমান্ডগুলি চালায় এবং এটি আপনার বর্তমান শেল পরিবেশকে প্রভাবিত করবে। আপনি এখনও সোর্স করা ফাইলটিতে যুক্তিগুলি পাস করতে পারেন এবং ব্যাশ আসলে $PATHকোনও সাধারণ কমান্ডের মতো ফাইলের নামটি সন্ধান করতে পারে যদি এতে কোনও স্ল্যাশ না থাকে।


মূল প্রশ্নের সাথে সম্পর্কিত নয় .বনাম source, কিন্তু আপনার উদাহরণে,

. ./myScript.sh 

এর সাথে অভিন্ন নয়

source myScript.sh

কারণ যখন .এবং sourceকার্যকরীভাবে অভিন্ন, myScript.shএবং ./myScript.shএকই নয়। যেহেতু ./myScript.shএকটি স্ল্যাশ রয়েছে তাই এটি একটি পাথ হিসাবে ব্যাখ্যা করা হয় এবং শেলটি কেবল ব্যবহার করে ./myScript.sh। তবে myScript.shস্ল্যাশ নেই তাই শেলটি $PATHপ্রথমে এটি অনুসন্ধান করবে। এটি এর জন্য POSIX নির্দিষ্ট স্ট্যান্ডার্ড আচরণ .। বেশিরভাগ শাঁস এটির জন্য ডিফল্ট হলেও যদিও তারা এক্সটেনশন যুক্ত করতে পারে (যেমন পথের অনুসন্ধানের পরে বর্তমান ওয়ার্কিং ডিরেক্টরিতে সন্ধান করা) বা ./ এর আচরণ পরিবর্তন করার বিকল্পগুলি source


2
আচরণ যখন ফাইলের প্রদান পথ একটি ধারণ করে না /শেল-নির্ভরশীল এবং জন্য bashএবং zshউপর POSIX মোড অথবা সক্ষম করা আছে কিনা নির্ভর করে। আরও খেয়াল করুন যে অনেকগুলি ksh বাস্তবায়নে, .থেকে আলাদা আচরণ করে source
স্টাফেন চেজেলাস

@ স্টাফেনচাজেলাস হ্যাঁ, আপনি ঠিক বলেছেন। আমি স্পষ্ট করে একটি নোট যুক্ত করেছি যে এটি উপরের বিবরণটি পসিক্স স্ট্যান্ডার্ডের।
jw013

8

হ্যাঁ, তারা সমতুল্য। কার্যকরী কোন পার্থক্য নেই; .এটি কেবল একটি বিল্টিন প্রতিশব্দ source

(সম্পাদনা: দৃশ্যত এই একমাত্র সত্য হয় bashএবং zshকিছু লাইটার শাঁস হবে না। sourceশুধু .POSIX দ্বারা নির্দিষ্ট করা হয়, যাতে ksh, dash, ash, ইত্যাদি নাও থাকতে পারে sourceদেখুন। Jw013 এর উত্তর তথ্যের জন্য।)


ধন্যবাদ! কিন্তু $ alias .আউটপুট bash: alias: .: not found
টিম

এটি উভয় বিল্টিন এবং ওরফেও বিল্টিন। এটি নথিভুক্ত , তবে আমার অনুমান 'প্রতিশব্দ' এই ক্ষেত্রে সঠিক শব্দটি নয়, 'উরফ' নয়।
কালেব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.