এটা নির্ভর করে. ইন 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"
।