এটা নির্ভর করে. ইন zshআপনি নির্ধারণ করতে পারেন cdস্ট্যাকের স্বয়ংক্রিয়ভাবে ডিরেক্টরির পুরানো ডিরেক্টরির ধাক্কা, কিন্তু এটা ডিফল্ট সেটিং নয়।
আমি যতক্ষণ না zshডিফল্ট সেটিংসের সাথে বলতে পারি তার সাথে খুব একই রকম আচরণ করে bash:
cd somedir
- ডিরেক্টরিতে পরিবর্তন করুন
somedir
- মূল ডিরেক্টরিটি সংরক্ষণ করুন
OLDPWD
- সেট
PWD="somedir"
- ডিরেক্টরি স্ট্যাকের শীর্ষ উপাদান (দ্বারা প্রদর্শিত হিসাবে
dirs) প্রতিস্থাপন (স্ট্যাকের somedirউপাদানগুলির সংখ্যা পরিবর্তন হয় না) not
cd -:
- ডিরেক্টরিতে পরিবর্তন করুন
$OLDPWD
- এর swap 'র মান
PWDএবংOLDPWD
- প্রতিফলিত করতে ডিরেক্টরি স্ট্যাকের শীর্ষ উপাদানটি পরিবর্তন করুন (নতুন)
PWD
pushd somedir:
- ডিরেক্টরিতে পরিবর্তন করুন
somedir
- মূল ডিরেক্টরি সংরক্ষণ করুন
OLDPWD
- সেট
PWD="somedir"
somedirডিরেক্টরি স্ট্যাকের দিকে ধাক্কা (এক উপাদান দ্বারা এটি প্রসারিত)
popd:
- মূল ডিরেক্টরি সংরক্ষণ করুন
OLDPWD
- ডিরেক্টরি স্ট্যাকের প্রথম উপাদানটি সরান
- ডিরেক্টরি স্ট্যাকের নতুন শীর্ষ উপাদান ডিরেক্টরি পরিবর্তন করুন
PWDডিরেক্টরি স্ট্যাকের নতুন শীর্ষ উপাদান সেট করুন
দ্রষ্টব্য: বর্তমান কর্মরত ডিরেক্টরিটি ডিরেক্টরি স্ট্যাকের একটি উপাদান হিসাবে বিবেচনা করা হয় zshএবং এর মধ্যে পৃথক হয় bash। আমি bashউপরের তালিকাগুলির রেফারেন্স হিসাবে ব্যবহার করেছি ।
ইন bashবর্তমান কাজ ডিরেক্টরির ডিরেক্টরির স্ট্যাকের উপরে উপাদান বলে মনে করা হয়। man 1 bashবলেছেন:
pushd [-n] [dir]
[…] dirডিরেক্টরিতে শীর্ষে স্ট্যাক যুক্ত করে এটি এটিকে নতুন বর্তমান ওয়ার্কিং ডিরেক্টরি হিসাবে তৈরি করে যেন এটি cdবিল্টিনের পক্ষে যুক্তি হিসাবে সরবরাহ করা হয়েছিল । [...]
মুদ্রণ DIRSTACK( echo ${dirstack[@]}) নিশ্চিত করে যে প্রথম উপাদানটি অভিন্ন $PWD।
ইন zshবর্তমান কাজ ডিরেক্টরির ডিরেক্টরির স্ট্যাকের অংশ (কিন্তু এখনও দেখানো নয় dirs)। man 1 zshbuiltinsবলেছেন:
pushd [ -qsLP ] [ arg ]
[…] বর্তমান ডিরেক্টরিটি পরিবর্তন করুন এবং পুরাতন বর্তমান ডিরেক্টরিটিকে ডিরেক্টরি স্ট্যাকের উপরে চাপ দিন। প্রথম আকারে, বর্তমান ডিরেক্টরিটি আর্গে পরিবর্তন করুন। [...]
মুদ্রণ dirstack( echo ${dirstack[@]}) এবং এর আউটপুটটির সাথে তুলনা করলে dirsদেখানো উচিত যে এটি PWD`ডাইরস্ট্যাকের অংশ নয়।
উভয় শেলের dirsমধ্যে বর্তমান উপাদানটিকে প্রথম উপাদান হিসাবে মুদ্রণ করে। উভয় শেলগুলিতে, সূচকের সাথে ডিরেক্টরি স্ট্যাক উপাদানটি সেই ডিরেক্টরিকে 1বোঝায় যা শেষের আগে বর্তমান ছিল pushd। এর কারণ এটিতে অ্যারেগুলি zshসাধারণত সংখ্যায়ন করা হয় 1, যখন তারা ভিতরে থেকে সংখ্যাযুক্ত 0হয় bash। সুতরাং ব্যবহারিক পার্থক্য সামান্য
উপরে যেমন বলা হয়েছে, এই আচরণটি পরিবর্তন করা যেতে পারে zsh।
আপনি যদি AUTO_PUSHDবিকল্পটি zsh( setopt autopushd) এর cd somedirমতো আচরণ করে সেট করে থাকেন pushd somedirতবে পূর্ববর্তী ডিরেক্টরিটি স্বয়ংক্রিয়ভাবে ডিরেক্টরি স্ট্যাকের দিকে ঠেলা যায়। এটি সম্ভবত আপনার মেশিনের ক্ষেত্রে। আপনি setoptডিফল্ট উপায়ে সেট না করা বিকল্পগুলির একটি তালিকা পেতে দৌড়াতে পারেন । দেখুন, autopushdতালিকায় প্রদর্শিত হয়েছে কিনা ।
তবে এটির cd -মতো আচরণে কোনও পরিবর্তন হয় না popd। পরিবর্তে এটি কেবল $PWDডিরেক্টরি স্ট্যাকের দিকে ঠেলা দেয় এবং ডিরেক্টরিটি এতে পরিবর্তন করে $OLDPWD। তার মানে বারবার কল cd -করা আসলে ডিরেক্টরি স্ট্যাক ( ($PWD $OLDPWD $PWD $OLDPWD $PWD …)) বাড়বে । যদি এটি আসলে popdআপনার সিস্টেমে হুবহু আচরণ করে তবে আমি প্রস্তাব দেব যদি cdআসলে বিল্টিন ( whence -v cd) হয়; এটি সম্ভবত একটি উপাধি বা ফাংশন দ্বারা প্রতিস্থাপিত হয়।
ডিরেক্টরি স্ট্যাক AUTO_PUSHDসক্ষম হওয়ার পরিবর্তে দ্রুত বৃদ্ধি পাবে , আপনি DIRSTACKSIZEপছন্দসই সর্বোচ্চ আকারে প্যারামিটার সেট করে এর আকারটিকে সীমাবদ্ধ করতে পারেন । বিকল্পটি
সেট করে আপনি নকলগুলিও প্রতিরোধ করতে পারেন PUSHD_IGNORE_DUPS।
আরও বিকল্পের জন্য ম্যানুয়ালটি দেখুন ।
cdসেট শেল পরিবর্তনশীলOLDPWDপূর্ববর্তী ডিরেক্টরি, এবংcd -অনুবাদ পরারcd "$OLDPWD"।