এসএসএস কল করার সময় কি $ TERM এর মান পরিবর্তন করা সম্ভব?


21

আমার স্থানীয় টার্মিনালে আমার কাছে TERM = konsole-256color রয়েছে তবে আমি এই সংজ্ঞাটি সংযোগের জন্য সংযুক্ত সমস্ত রিমোট মেশিন নই।

দূরবর্তী যন্ত্রটিতে টিআরএম পরিবর্তন করা কি এসএসএস করা সম্ভব? দূরবর্তী মেশিনে .বাশ * স্ক্রিপ্টগুলি পরিবর্তন না করে, কেবলমাত্র আমার স্থানীয় ডেস্কটপে কনফিগারেশন পরিবর্তন করে?

উত্তর:


9

আমি আমার .bashrc ফাইলে নিম্নলিখিত উপনামটি যুক্ত করেছি। এটি ওজির উত্তরটি ব্যবহার করে তবে একটি উপাধিতে আবৃত করে। একটি যাদুমন্ত্র মত কাজ করে ;)

# Force xterm-color on ssh sessions
alias ssh='TERM=xterm-color ssh'

আমি যদি টার্মিনাল থেকে ssh ব্যবহার করি তবে এটি কাজ করে। তবে আমার কাছে বেশ কয়েকটি স্ক্রিপ্টও রয়েছে যা ssh চালায় এবং তাদের জন্য উপন্যাসটি প্রসারিত হয় না। আমি কি তাদের কোনওর জন্য পৃথক উরফ তৈরি করা এড়াতে পারি এমন কোনও উপায় আছে?
Thayne

যদি আপনার স্ক্রিপ্টের জন্য একটি নির্দিষ্ট টিআরএম মান প্রয়োজন হয় তবে আমি মনে করি যে স্ক্রিপ্টটিতে কেবল সেই পরিবর্তনীয় সেট করা ভাল। বা এটি একটি বিকল্প না?
জোহান

এটি আসলে কোনও বিকল্প নয়। এছাড়াও, এই স্ক্রিপ্টগুলি কিছু পরামিতিগুলির উপর ভিত্তি করে একটি সার্ভার নির্বাচন করে এবং সেই সার্ভারে একটি ssh সেশান খোলে (অথবা সম্ভবত কোনও টিএমউक्स সেশনে সার্ভারগুলি), স্ক্রিপ্টগুলি নিজেরাই TERM মানের উপর নির্ভর করে না।
Thayne

সেক্ষেত্রে আপনি আপনার বাশ প্রোফাইল, বা স্ক্রিপ্টের সাথে আলাদা আলাদা এলিয়াস স্ক্রিপ্টটি অন্তর্ভুক্ত করতে পারেন: শপট-এক্সপেন্ড_লিয়াসেস; উত্স। / .বাশ_লিয়াস
জোহান

7
TERM=vt100 ssh some.host.name

রিমোটে, প্রতিধ্বনি $ TERM চালান ।


যদিও আমি এটি সম্পর্কে, তবে আমি এটি কেবলমাত্র আমার যে হোস্টের সাবসেটের জন্য সেট করতে চাই, তাই TERM = ... ssh জারি করা সব সময় কার্যকর হবে না। এবং কোন হোস্টের পুরানো টার্মক্যাপ তথ্য রয়েছে তা মনে করে, এবং তারপরে ফ্লাইতে কমান্ড পরিবর্তন করাও খুব সুন্দর নয়।

প্রতি হোস্ট কনফিগারেশন কেবল / etc / ssh / ssh_config এ সমর্থিত, তবে আমি হোস্ট প্রতি টার্মিনাল স্কিমা ম্যাপিং সমর্থন করার জন্য কোন কনফিগারেশন মান জানি না।
ওজি

এটি know / .ssh / কনফিগারেশনেও করা যেতে পারে, যা আমি জানি তবে দূরবর্তী সার্ভারে প্রেরিত পরিবেশ পরিবর্তন করার কোনও বিকল্পও আমি খুঁজে পাচ্ছি না। আশা করছিলাম যে আমি কিছু মিস করেছি।

7

মানুষ ssh:

     ssh reads ~/.ssh/environment, and adds lines of the format
     “VARNAME=value” to the environment if the file exists and users are
     allowed to change their environment.  For more information, see the
     PermitUserEnvironment option in sshd_config(5).

সম্পাদনা:

ইঁদুর, আমি আশা করি এটি স্থানীয় দিকে থাকতে পারে, এখনও, যদি ইচ্ছা থাকে তবে উপায় আছে। মানুষ ssh_conf:

SendEnv
             Specifies what variables from the local environ(7) should be sent
             to the server.  Note that environment passing is only supported
             for protocol 2.  The server must also support it, and the server
             must be configured to accept these environment variables.  Refer
             to AcceptEnv in sshd_config(5) for how to configure the server.
             Variables are specified by name, which may contain wildcard char-
             acters.  Multiple environment variables may be separated by
             whitespace or spread across multiple SendEnv directives.  The
             default is not to send any environment variables.

প্রাপ্তির শেষের দিকে sshd এর কনফিগারেশনের উপর নির্ভর করে এটি "কোনও দূরবর্তী ফাইল পরিবর্তন নয়" এর প্রয়োজনীয়তা পূরণ করতে পারে বা নাও পারে।


1
হ্যাঁ, তবে এটি দূরবর্তী দিকের কনফিগারেশন এবং আমার এমন কিছু প্রয়োজন / প্রয়োজন যা কেবল স্থানীয় প্রান্তে পরিবর্তিত হয়।

4
সেন্ডইএনভ সম্পর্কিত নয়। এটি সম্ভবত অতিরিক্ত এনভের ভেরিয়েবলগুলি প্রেরণ করতে পারে তবে: ১. এটি সেগুলিকে সংশোধন করতে পারে না এবং ২।

5

এখানে আমার দ্রুত এবং নোংরা সমাধানটি আমি একসাথে ছুড়েছি। আমি আরও ভাল কিছু পছন্দ করি। আমি মনে করি পরিবর্তে আমি একটি শেল স্ক্রিপ্ট ব্যবহার করতে পারি। TERMমানগুলি সামঞ্জস্য করা পাঠকের অনুশীলন হিসাবে ছেড়ে যায়।

# To move into a separate plugin...
function ssh {
   if [[ "${TERM}" = screen* || konsole* ]]; then
     env TERM=screen ssh "$@"
   else
     ssh "$@"
   fi
}

আদর্শভাবে, এটি ControlPersistএকাধিক সংযোগের জন্য দীর্ঘ বিলম্ব রোধ করতে স্টাফটি ব্যবহার করে অন্যদিকে টিআরএম পরীক্ষা করার মতো কিছু করবে ।


ধন্যবাদ! আমি এটির মতো কিছু করেছি, তবে $TERMএকটি if/ elseনির্মাণের সাথে নির্দিষ্ট মানগুলি পরীক্ষা করার পরিবর্তে আমি $(echo -n "$TERM" | sed -e s/tmux/screen/)আমার স্থানীয় পদে সমস্যাযুক্ত "tmux "টিকে আরও সার্বজনীনভাবে স্বীকৃত" স্ক্রিন "প্রকার ( এখানে উত্স ) দিয়ে প্রতিস্থাপন করতে ব্যবহার করছি ।
উইন্ডেন্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.