জেডডটডিআইআরের সাথে থাকাকালীন, আপনি আপনার পছন্দের যে কোনও ডিরেক্টরিতে 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_name
proj:x
/opt/myproj/proj/x
D
${(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/file
sourced করা হবে।
${PS1=%m%# }
পিএস 1 ইতিমধ্যে সংজ্ঞায়িত না $PS1
হওয়া %m%#
পর্যন্ত (এবং অ্যাসাইন করে ) প্রসারিত হয় ( উদাহরণস্বরূপ /path/to/file
পরে এর পরে unset
), এবং %m%#
এর ডিফল্ট মান হিসাবে ঘটে PS1
।