আমি নিশ্চিত না যে আপনি কীভাবে আপনার স্থানীয়কে .zshrcদূরবর্তী সার্ভারে রাখতে পারবেন, (এটি স্থায়ীভাবে এটি সেখানে সংরক্ষণ না করে), এটি আমার জন্য দূরবর্তী সার্ভারে আমার লগইন শেলটি পরিবর্তন করতে কাজ করে।
যেহেতু এটি একটি ভাগ করা অ্যাকাউন্ট, আমি zshকেবল এই পদ্ধতিতে নিজের জন্য ব্যবহার করতে পারি।
~/.ssh/configএটি আপনার স্থানীয় মেশিনে আপনার ফাইলে যুক্ত করুন।
Host yourServer
HostName <IP, FQDN or DNS resolvable name>
IdentityFile ~/.ssh/<your keyfile>
RemoteCommand zsh -l
RequestTTY force
User <yourUsername>
নীচের মত, আপনি যা খুঁজছেন তা সম্পাদন করার হ্যাকিশ উপায় হতে পারে।
সতর্কতা এটি কোনও গ্যারান্টি সহ আসে না এবং 'জ্ঞানী' বলে মনে হয় না, তবে আমি নিজের স্থানীয় ফাইলটি সার্ভারে রেখেছি এবং এটি ব্যবহার করে লগইন শেলটিতে উত্স দিয়েছি।
Host someHost
HostName someIP
IdentityFile ~/.ssh/somekey.pem
RemoteCommand zsh -l -c 'sleep 1; source /tmp/somefile; zsh'
PermitLocalCommand yes
LocalCommand bash -c 'sftp %r@%h <<< "put /tmp/somefile /tmp/somefile"'
RequestTTY force
User someUser
কিভাবে এটা কাজ করে?
RemoteCommand দূরবর্তী দিকে চালানো দরকার তা নির্ধারণ করে।
LocalCommandস্থানীয়ভাবে কী চালানো উচিত তা সংজ্ঞায়িত করে, যা আপনার স্থানীয় ফাইলটিকে সোর্স করার জন্য দূরবর্তী সার্ভারে অনুলিপি করতে ব্যবহৃত হয়। এখানে ধরা আছে, দূরবর্তী হোস্টের সাথে 'সফল' সংযোগের পরে এটি ঘটে।
অর্থ:
- রিমোটের সাথে আপনার সংযোগটি উন্মুক্ত এবং জীবন্ত হওয়া উচিত
- আপনার রিমোট শেলটিতে এখনও ফাইল নেই, সুতরাং এটি ফাইল না হওয়া পর্যন্ত অপেক্ষা করতে হবে, ঠিক আছে
sleep
- আপনার স্থানীয় ব্যবহারগুলি
sftpআপনার ফাইলকে রিমোট সার্ভারে রেখে দেয়, রিমোট সার্ভার থেকে উঠে আসে sleepএবং আপনার স্ক্রিপ্টগুলি উত্স করে।
এটি সুপার হ্যাকিশ, আমি আরও ভাল উপায় আছে কিনা তা জানতে চাই।
আপডেট: এটি 'দীর্ঘ' ঘুমের পরিবর্তে ব্যবহার করা যেতে পারে:
RemoteCommand zsh -l -c 'while [[ ! -f /tmp/somefile ]]; do sleep 0.05; done; source /tmp/somefile; zsh'
/etc/shellsশেলটি নির্বাচনযোগ্য হওয়ার জন্য বাইনারি যাওয়ার পথটি থাকতে হবে।