দেখুন: বেস FAQ এন্ট্রি # 28: "আমি আমার স্ক্রিপ্টের অবস্থান কীভাবে নির্ধারণ করব? আমি একই জায়গা থেকে কিছু কনফিগার ফাইল পড়তে চাই।"
কোনও সমাধান সময়ের 100% কাজ করে না:
এটি উপলব্ধি করা গুরুত্বপূর্ণ যে সাধারণ ক্ষেত্রে, এই সমস্যার কোনও সমাধান নেই। আপনি যে কোনও পদ্ধতির কথা শুনে থাকতে পারেন, এবং নীচে বিস্তারিতভাবে জানানো যে কোনও পদ্ধতির ত্রুটি রয়েছে এবং এটি কেবলমাত্র নির্দিষ্ট ক্ষেত্রে কাজ করবে। প্রথম এবং সর্বাগ্রে, আপনার স্ক্রিপ্টের অবস্থানের উপর নির্ভর করে সমস্যাটি পুরোপুরি এড়াতে চেষ্টা করুন!
আপনার যদি খুব পুনঃব্যবহারযোগ্য সরঞ্জাম লেখার প্রয়োজন হয় তবে আপনার স্ক্রিপ্টে প্যারামিটার হিসাবে সঠিক পথটি নেওয়া সবচেয়ে নির্ভরযোগ্য পদ্ধতি হতে চলেছে ।
ধরে নিচ্ছি আপনার স্ক্রিপ্টটি কেবলমাত্র কয়েকটি শাঁস থেকে চালানো হবে এবং কেবলমাত্র কিছুটা নমনীয়তার প্রয়োজনে আপনি সম্ভবত এই বিড়বিড়তা থেকে কিছুটা শিথিল করতে পারেন। আপনার বিকল্পগুলি দেখতে এখনও ভাল। এমন সাধারণ প্যাটার্ন রয়েছে যা লোকে বিশেষত সমস্যাযুক্ত বলে ব্যবহার করে।
বিশেষত, এফএকিউ খুব সাধারণভাবে ব্যবহৃত $0
ভেরিয়েবল এড়ানো পরামর্শ দেয় :
যেটি পড়া যায় $0
তা কখনই বুলেটপ্রুফ হবে না, কারণ $0
নিজেই অবিশ্বস্ত।
বিকল্প হিসাবে, আপনি $BASH_SOURCE
পরিবর্তে ব্যবহার করতে পারেন । এটার মতো কিছু:
source "${BASH_SOURCE%/*}/act.conf.sh"
এই সমাধানের জন্য কিছু সতর্কতাও রয়েছে। বিভিন্ন সমাধানের মধ্যে ট্রেড-অফগুলি দেখতে FAQ পৃষ্ঠাটি দেখুন। তারা মনে হয় যে এটি আপনার ক্ষেত্রে কার্যকর হবে সেই ক্ষেত্রে এটির cd
সাথে সংমিশ্রণের প্রস্তাব দেয় $BASH_SOURCE
কারণ আপনি যখন একটি কার্যকর ত্রুটি শর্তটি সঠিকভাবে প্রসারিত করতে ব্যর্থ হন তখন এটি পাবেন।
readlink
। প্রশ্নটি এখানে পোস্ট করার জন্য অনুসন্ধানের জন্য কীওয়ার্ডগুলি নির্ধারণ করতে সক্ষম ছিল না ....