আমার পিএস 1 প্রম্পটটিকে এসএসএসের উপরে ঠেলে দিচ্ছে


19

আমি পছন্দ করি এমন একটি নির্দিষ্ট "PS1" প্রম্পট ব্যবহার করি। আমি অন্যান্য অন্যান্য লোকের সাথে কয়েকটি ভিন্ন সার্ভারে কয়েকটি লগইন ভাগ করি। আমি ভাবছিলাম যে আমার স্থানীয় ব্যাশ প্রোফাইলে কোনও রিমোট প্রম্পট নির্দিষ্ট করার কোনও উপায় আছে বা অন্য কোনও উপায় আছে তবে প্রতিবার যখন আমি রিমোট করছি তখন অনুলিপি করুন এবং আটকান।

উত্তর:


17

প্রতিটি প্রত্যন্ত মেশিনে একটি ফাইল আপলোড করুন, বলুন ~/.my_custom_bashrc, আপনার কাস্টম bashকনফিগারেশন সহ, (এই ক্ষেত্রে PS1=...) তারপরে লঞ্চ করুন ssh:

ssh user@host -t "bash --rcfile ~/.my_custom_bashrc -i"

আপনি সহজেই bashপঠনযোগ্যতার জন্য মোড়ক হিসাবে একটি ফাংশন ব্যবহার করতে পারেন ।


10

আপনি যদি কেবল PS1ভেরিয়েবলটি প্রেরণ করতে চান এবং এতে কোনও '(একক উদ্ধৃতি) না থাকে , চেষ্টা করুন:

ssh targethost -t "PS1='$PS1'; exec bash"

স্থানীয় যদিও এটি .bashrcওভাররাইট করতে পারে PS1(এটি নির্দেশ করার জন্য ডেনিস উইলিয়ামসনকে ধন্যবাদ )।

Ssh এর মাধ্যমে পরিবেশের ভেরিয়েবলগুলি প্রেরণ করার উপায় রয়েছে তবে তারা সাধারণত সার্ভার কনফিগারেশনে অক্ষম থাকে। যদি PermitUserEnvironmentনির্দেশটি সার্ভার কনফিগারেশনে সক্ষম করা থাকে এবং প্রতিটি ব্যবহারকারীর নিজস্ব কী জুড়ি থাকে (হ্যাঁ, আপনি এত ভাগ্যবান নাও হতে পারেন), আপনি আপনার কী environment="PS1=…"অনুসারে লাইনে যুক্ত করতে পারেন ~/.ssh/authorized_keys

আপনি যদি একটি শেয়ার্ড ব্যবহারকারী অ্যাকাউন্টে নিজের কনফিগারেশন রাখতে চান, আপনি নিজের কনফিগারেশন ফাইল ডিরেক্টরি তৈরি করতে পারেন এবং HOMEপরিবেশের পরিবর্তনশীলটিকে সেই ডিরেক্টরিতে নির্দেশ করতে পারেন।

ssh targethost mkdir mrstatic.home
scp .bashrc targethost:mrstatic.home/

mrstatic.homeআপনি যখন অন্য ব্যবহারকারীদের সাথে কোনও ফাইল ভাগ করতে চান তখন মূল ডিরেক্টরিতে সংশ্লিষ্ট এন্ট্রিটির দিকে নির্দেশ করে ডিরেক্টরিতে প্রতীকী লিঙ্কগুলি তৈরি করুন ।

তারপরে, লগ ইন করুন

ssh targethost -t 'HOME=~/mrstatic.home; exec bash'`

আপনি যদি রিমোট .profile(বা অন্যান্য সূচনা ফাইল) সংশোধন করতে ইচ্ছুক হন তবে আপনি সম্ভবত নিজের সেটিংস স্বয়ংক্রিয় করতে পারেন। অনেক সাইট LC_*পরিবেশের ভেরিয়েবলের মাধ্যমে অনুমতি দেয় (সাধারণত তারা স্থানীয়ভাবে সেটিংসের জন্য ব্যবহৃত হয়)। যদি এই উভয় শর্ত পূরণ হয় তবে আপনি একটি ভেরিয়েবল সেট করতে পারেন যা বাস্তবে লোকালগুলির জন্য ব্যবহৃত হয় না, বলুন LC_USER, ক্লায়েন্টের পাশে, এবং এটি সার্ভারে পরীক্ষা করুন .profile

(অবশ্যই শেয়ার করা অ্যাকাউন্টগুলি একটি খারাপ ধারণা, তবে আমি বুঝতে পারি যে আপনি সেই পরিস্থিতি পরিবর্তনের পক্ষে থাকতে পারেন না))


3
ssh -t user@host "remote='$PS1' bash -i"

তারপরে, প্রম্পটে:

PS1=$remote

1
একটি পরিশীলিত বাশ প্রম্পট যদি এটি উদ্ধৃত না হয় (আপনার কাছ থেকে এসে আমি অবাক হয়েছি) সম্ভবত ভাঙ্গার সম্ভাবনা রয়েছে। এবং কেন অতিরিক্ত কমান্ড, এবং কেবল "PS1='$PS1' bash -i"(এবং কেন নয় exec) ও নয় ?
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

1
@ গিলস: উদ্ধৃতি অনুপস্থিত: opালুতা। অতিরিক্ত কমান্ড: PS1শেল প্রারম্ভকালে ওভাররাইট করা এটি অস্বাভাবিক হবে না । কোনও এক্সিকিউটিভ: আমার সিস্টেমে পরীক্ষার সময় এটি কোনও পার্থক্য বলে মনে হয়নি - কোনও অতিরিক্ত প্রক্রিয়া নেই।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

1
ওহ, হ্যাঁ, এটি একটি ভাল পয়েন্ট, স্থানীয়টি .bashrcওভাররাইট হওয়ার সম্ভাবনা রয়েছে PS1
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

2

আপনার PS1 প্রম্পটটি ~ / .ssh / এনভায়রনমেন্টে রাখুন এবং ssh সেশনটি আপনার লগইন করা প্রতিটি হোস্টের কাছে এটি বহন করবে। এটি আমার জন্য ওপেনশ 4.3 পি 2 নিয়ে কাজ করে।


1
এটি কেবলমাত্র তখনই কাজ করে যদি সার্ভারের কনফিগারেশন সক্ষম করে থাকে PermitUserEnvironment, যা ডিফল্টরূপে বন্ধ থাকে।
Flimm

1

আপনি ক্লায়েন্ট পক্ষের পরিবেশের ভেরিয়েবলগুলি নির্দিষ্ট করতে পারেন এবং যদি ssh-সার্ভার এটির অনুমতি দেয় (ম্যান sshd-config চেক করুন), আপনি যখন মেশিনে লগইন করবেন তখন এই ভেরিয়েবলগুলি সেশনে অনুলিপি করা হবে।

সুতরাং, আপনাকে একটি বিদ্যমান PS1 (বা যে কোনও ভেরিয়েবল) পরীক্ষা করতে সার্ভারে .bashrc কনফিগার করতে হবে এবং PS1 এটি ইতিমধ্যে সেট না করা থাকলে কেবল সেট করতে হবে।

বা, যা জিনিসগুলি সহজ করে তোলে আপনি নিজের সেটিংসকে একটি ফাংশনে বান্ডিল করেন .. এবং সেই ফাংশনটি বিশেষ উত্স হিসাবে আপনার উত্স হিসাবে উত্স ( source joes_bashrc) বা সরাসরি .bashrc এ স্থাপন করুন। আপনার নিজের ফাইল থাকা কিছুটা দৃ rob় বলে মনে হচ্ছে। অন্যান্য লোকেরা আপনার সেটিংস ব্যবহার করতে পারে তবে তা করতে বাধ্য হয় না।


1

লগইনগুলি ভাগ করবেন না। নিজের মতো করে এসএসএইচ করুন, তারপর sudo -su shareduser(-s অর্থ "শেল") করুন।

sudoআপনার হোম ডিরেক্টরি রাখতে প্রস্তুত করুন :

Defaults env_keep += "HOME"

যখন আমি পদোন্নতি পাব তখন চেষ্টা করব এবং সেই নীতিটি কার্যকর করব তবে আপাতত আমি এই নিয়ে আটকে আছি।
আনফ্যান্ডডাউনট

1

আপনি যদি কোনও অতিরিক্ত স্ক্রিপের প্রয়োজন ছাড়াই এটি করতে চান তবে আপনি এই জাতীয় কিছু করতে পারেন:

ssh -t srvname ' cp ~/.bashrc ~/.bashrc.n &>/dev/null ; echo "LS_COLORS=\"no=00:fi=00:ETC:ETC:ETC\";" >> ~/.bashrc.n ; echo "export LS_COLORS" >> ~/.bashrc.n ; echo "alias ls=\"ls --color=auto\";" >> ~/.bashrc.n ; exec bash --rcfile ~/.bashrc.n'

এটি সার্ভারগুলি বাশার্কের উপর ভিত্তি করে তবে আপনার ওভাররাইডের সাহায্যে একটি .bashrc.n তৈরি করবে।


এই কারণেই কিছু লোক টার্মিনালগুলি সম্পর্কে ভয় পান।

0

যদি আপনি আপনার সহকর্মীদের উপর অবিচ্ছিন্নভাবে অনুপ্রবেশ করতে ইচ্ছুক হন এবং আপনি তাদের পছন্দকে বাধাগ্রস্ত না করার জন্য তাদের উপর বিশ্বাস রাখতে পারেন, তবে আমি সাইরাস এর উত্তর , আকিরের উত্তর এবং ডেনিস উইলিয়ামসনের উত্তরের সংমিশ্রণের পরামর্শ দিচ্ছি ।

  1. প্রতিটি সার্ভারে, সম্পাদনা করুন ~/.bashrc এবং যুক্ত করুন
    যদি ["$ আনফড" = 1] # আনফান্ডডাউনট জন্য বিশেষ কোড
    তারপর
        PS1 = " (আপনার পছন্দসই প্রম্পট) "
         (আপনি চাইলে অন্য কোনও পছন্দসই) 
    ফাই
    শেষে. যদিও আপনার সহকর্মীরা "[আপনাকে] বেস প্রোফাইলের উপর লেখার প্রশংসা করবে না", তারা এটিকে অবগত না করলে তারা এ বিষয়ে অবগত হবে না।
  2. আপনি যখন কোনও রিমোট সার্ভারে লগইন করেন, তখন করবেন
    ssh -t ব্যবহারকারী @ হোস্ট "আনফ = 1 বাশ -i"
    আপনি সম্ভবত এটির স্থানীয় অ্যাকাউন্টে কোনও নাম বা শেল ফাংশন রাখতে চাইবেন, তবে এটি যথেষ্ট সংক্ষিপ্ত - অন্য উত্তরগুলির চেয়ে কম - আপনি সহজেই এটিকে ম্যানুয়ালি টাইপ করতে পারতেন।

আমি বিশ্বাস করি যে এটি মোটামুটি পরিষ্কার, কিন্তু: sshকমান্ডটি Unfযখন আপনি লগ ইন করে তখন দূরবর্তী সার্ভারে পরিবর্তনশীল সেট হয়ে যায়। এটি আপনার কোডটিকে রিমোটে ডেকে .bashrcআনবে, যা আপনার কাস্টমাইজেশন (গুলি) কার্যকর করে দেবে। যেহেতু আপনি আপনার কোডটি শেষে রেখেছেন তাই .bashrcএটি ফাইলের আগে সাধারণ সেটিংসকে ওভাররাইড করে।

প্রকাশ: আমি এটি পরীক্ষা করিনি।


-1

সবচেয়ে সহজ উপায় আইএমএইচও:

ssh user@server 'PROMPT_COMMAND=export PS1="changeme $" bash -li;'

আমি নিশ্চিত যে কাজ করে না; মনে হচ্ছে এটি উদ্ধৃতিগুলির একটি স্তর অনুপস্থিত। এমনকি যদি তা হয়, সেটিংস PROMPT_COMMAND(যা শেল একটি প্রম্পট প্রকাশের সময় প্রতিটি সময় কার্যকর করে) এই সমস্যাটি সমাধান করার জন্য খুব ভারী হাতে মনে হয়। এবং, যেহেতু এটি কিছুটা আরকেন, যে কোনও উত্তর যা এর প্রস্তাব দেয় এটির কীভাবে এটি কাজ করে তার একটি ব্যাখ্যা থাকা উচিত।
স্কট

-2

আপনি sshfs / nfs এর উপর আপনার বাড়ির মাউন্ট করার মতো জিনিস করতে পারেন, তবে সবচেয়ে সহজ সমাধান হ'ল আপনার বাশার্ককে নতুন মেশিনে নিয়ে যাওয়া। এটি এলিয়াস এবং স্টাফও নিয়ে আসে।


আমি আমার প্রশ্নে যেমন বলেছি আমি এই লগইনগুলি অন্য লোকের সাথে ভাগ করি। আমি নিশ্চিত যে তারা বেস প্রোফাইলে আমার লেখার প্রশংসা করবে না।
আনফ্যান্ডডাউনট

1
এনএফএসের উপরে OME হোম মাউন্ট করা উন্মাদ ins শুধু Sayin'.
ওয়েসলি ধান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.