জেডডটডিআইআরের সাথে থাকাকালীন, আপনি আপনার পছন্দের যে কোনও ডিরেক্টরিতে zshডাকা একটি ফাইলের ব্যাখ্যা করতে বলতে পারেন .zshrc, এটি আপনার নির্বাচনের যে কোনও ফাইলের ব্যাখ্যা দেয় (অগত্যা বলা হয় না .zshrc) বেশ কঠিন প্রমাণিত হয়।
ইন shবা kshঅনুকরণ, zshমূল্যায়ন $ENV; যাতে আপনি emulate zshআপনার শীর্ষে যোগ করতে /path/to/fileএবং করতে পারেন:
ssh -t host 'zsh -c "ARGV0=sh ENV=/path/to/file exec zsh"'
আর একটি খুব সংশ্লেষিত পদ্ধতির হতে পারে:
ssh -t host 'PS1='\''${${functions[zsh_directory_name]::="
set +o promptsubst
unset -f zsh_directory_name
unset PS1
. /path/to/file
"}+}${(D):-}${PS1=%m%# }'\' exec zsh -o promptsubst -f
এটি একটি ব্যাখ্যা একটি বিট প্রাপ্য।
${foo::=value}একটি পরিবর্তনশীল সম্প্রসারণ যে আসলে সেট $foo । $functionsএকটি বিশেষ সাহসী অ্যারে যা তাদের সংজ্ঞাগুলিতে ফাংশনের নাম ম্যাপ করে।
সঙ্গে promptsubstবিকল্প, ভেরিয়েবলের মধ্যে $PS1প্রসারিত করছে। সুতরাং, প্রথম প্রম্পটের পরে, PS1 এর ভেরিয়েবলগুলি প্রসারিত হবে।
zsh_directory_nameফাংশন একটি বিশেষ ফাংশন যা বিস্তৃত সাহায্য করে ~fooথেকে /path/to/somethingএবং বিপরীত। %~এটি প্রম্পটে উদাহরণস্বরূপ ব্যবহার করা হয় যাতে বর্তমান ডিরেক্টরিটি যদি থাকে তবে /opt/myproj/proj/xআপনি ম্যাপিংয়ের ~proj:xমাধ্যমে এটি প্রদর্শন করতে পারেন <=> । এটি প্যারামিটার সম্প্রসারণ পতাকাও ব্যবহার করে । সুতরাং যদি একটি প্রসারিত হয় , যে ফাংশন বলা হবে।zsh_directory_nameproj:x/opt/myproj/proj/xD${(D)somevar}zsh_directory_name
এখানে, আমরা ব্যবহার করছি ${(D):-}, ${:-}হলো, ${no_var:-nothing}বিস্তৃতি করার nothingযদি $no_varখালি থাকে, তাই ${(D):-}যখন কলিং কিছুই বিস্তৃতি zsh_directory_name। zsh_directory_nameপূর্বে হিসাবে সংজ্ঞায়িত করা হয়েছে:
zsh_directory_name() {
set +o promptsubst
unset -f zsh_directory_name
unset PS1; . /path/to/file
}
অর্থাৎ প্রথম PS1 সম্প্রসারণ (প্রথম প্রম্পট উপর) পরে, ${(D):-}কারণ হবে promptsubstবিকল্প সেট না করা (বাতিল করতে -o promptsubst), zsh_directory_name()undefined করা (যেমন আমরা এটা শুধুমাত্র একবার চালাতে চান) $PS1সেট না হবে, এবং /path/to/filesourced করা হবে।
${PS1=%m%# }পিএস 1 ইতিমধ্যে সংজ্ঞায়িত না $PS1হওয়া %m%#পর্যন্ত (এবং অ্যাসাইন করে ) প্রসারিত হয় ( উদাহরণস্বরূপ /path/to/fileপরে এর পরে unset), এবং %m%#এর ডিফল্ট মান হিসাবে ঘটে PS1।