ER TERM এর জন্য কোনও মান নেই এবং কোনও টি-টি নির্দিষ্ট করা হয়নি


22

আমি সম্প্রতি apt-get dist-upgradeআমার কুবুন্টু এবং লুবুন্টু লিনাক্স বাক্সগুলি আপগ্রেড করেছি (এবং ), এবং এখনই প্রতিবার আমি এই মেশিনগুলির মধ্যে যে কোনওটিতে লগইন করি, আমি এই বার্তাটি পাই:

tput: No value for $TERM and no -T specified

সঠিক বার্তার একটি স্ক্রিনশট এখানে: tput: $ TERM এর জন্য কোনও মান নেই এবং কোনও টি-টি নির্দিষ্ট নেই

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

আমি এটা কিভাবে ঠিক করবো?

হালনাগাদ

আমি এটি আমার .bashrc ফাইলে সন্ধান করেছি, যা আমার। প্রোফাইল ফাইল দ্বারা কল করা হচ্ছে। যদিও, আমার .bashrc ফাইলটি এখন চলে যখন আমি একটি জিইউআই লগইন করি যখন এটি আপগ্রেড করার আগে হয়নি didn't কিছুটা অদ্ভুত। এবং না, আমি আমার .bashrc ফাইল বা আমার। প্রোফাইলটি সম্প্রতি পরিবর্তন করেছি। এছাড়াও, বাশ আমার ডিফল্ট শেল নয়।

সমস্যাটি হ'ল আমি tputপ্রম্পটে রঙ যুক্ত করার জন্য ভেরিয়েবল সেট আপ করতে আমার .bashrc ফাইলে কল করছি । তবে (অনুপযুক্ত) সময়ে যখন আমার .bashrc ফাইলটি এখন চালিত হবে, $TERMসেট করা নেই।

fgRed=$(tput setaf 1)     ; fgGreen=$(tput setaf 2)  ; fgBlue=$(tput setaf 4)
fgMagenta=$(tput setaf 5) ; fgYellow=$(tput setaf 3) ; fgCyan=$(tput setaf 6)
fgWhite=$(tput setaf 7)   ; fgBlack=$(tput setaf 0)
bgRed=$(tput setab 1)     ; bgGreen=$(tput setab 2)  ; bgBlue=$(tput setab 4)
bgMagenta=$(tput setab 5) ; bgYellow=$(tput setab 3) ; bgCyan=$(tput setab 6)
bgWhite=$(tput setab 7)   ; bgBlack=$(tput setab 0)

আপডেট হওয়া প্রশ্ন: আমি এটি কীভাবে ঠিক করব? আমি $TERMনিজেকে সেট করা উচিত? বা সেট না করা হলে আমি কি এই ভেরিয়েবলগুলি সেট করা উচিত $TERM?

আপডেট 2

একটি সমাধান আমি চেষ্টা করেছিলাম তা $TERMসেট করা আছে কিনা তা পরীক্ষা করা to তবে এটি কাজ করে বলে মনে হয় না; আমি এখনও একই ত্রুটি বার্তা পেয়েছি। কোডটি এখানে:

if [ ! "$TERM" = "" ]; then
  #Do stuff here
fi

তাই দৃশ্যত সেট করা $TERM হয়েছিল , কিন্তু tputতবুও উপসংহারে তা তা হয়নি।


1
যদি আমি ভুল না হয়ে .profileডিফল্ট শেল নির্বিশেষে রান করি
সের্গেই কলডিয়াজহনি

@ সার্জ কিন্তু জিইউআই শেল লগইনের সময়? এছাড়াও, আমি সবসময় এই সমস্যাটি দেখিনি।
সিলডোরথ

হ্যাঁ, এটি ব্যবহারকারীর লগ ইন করার পরে চালানো উচিত এবং এটি ঠিক আপনি যা করছিলেন তা হয়েছিল
সের্গি কলডায়াজিনি

উত্তর:


13

পরিশেষে আমার জন্য কী কাজ করা হয়েছিল তা শেলটি একটি ইন্টারেক্টিভ শেল কিনা তা পরীক্ষা করা to আমি এই অন্যান্য পোস্টে সমাধানটি ইউনিক্স.স্ট্যাকেক্সেঞ্জচেজে ভিত্তি করেছিলাম: শেলটি লগইন / ইন্টারেক্টিভ / ব্যাচ কিনা তা কীভাবে পরীক্ষা করতে হয়

সুতরাং সমাধানের কোডটি ছিল:

if [[ $- == *i* ]]; then
  fgRed=$(tput setaf 1)     ; fgGreen=$(tput setaf 2)  ; fgBlue=$(tput setaf 4)
  fgMagenta=$(tput setaf 5) ; fgYellow=$(tput setaf 3) ; fgCyan=$(tput setaf 6)
  fgWhite=$(tput setaf 7)   ; fgBlack=$(tput setaf 0)
  bgRed=$(tput setab 1)     ; bgGreen=$(tput setab 2)  ; bgBlue=$(tput setab 4)
  bgMagenta=$(tput setab 5) ; bgYellow=$(tput setab 3) ; bgCyan=$(tput setab 6)
  bgWhite=$(tput setab 7)   ; bgBlack=$(tput setab 0)
fi

আহা, এটি একটি মার্জিত সমাধান। :)
গুনার হেজালমারসন

2
এটি যদি থাকে তবে .bashrcআমি অবাক হয়েছি। ডিফল্টটিতে .bashrcরয়েছে: # If not running interactively, don't do anything case $- in *i*) ;; *) return;;সুতরাং আপনার সেটিংস ইন্টারেক্টিভ না করা থাকলে প্রয়োগ করা উচিত নয়।
মুড়ু

@ মুরু আমার .bashrc ফাইলটি খুব অ-ডিফল্ট। :)
সিলডোরথ

তবে আপনি কোথায় করলেন? ভিতরে .bashrc?
jjmerelo

আমি মনে করি যদি আপনি আপনার ফাইল এটা ক্লিনার উপরের এই করা: [[ $- == *i* ]] || returnসূত্র: ( askubuntu.com/a/1070182/362122 )
ক্লিক করুন

9

যদি আপনি এই কাজ

if tty -s
then
    : # your tput commands
fi

এটি আপনার সমস্যার সমাধান করবে। -S বিকল্প ব্যতীত tty হয় আপনার tty প্রদর্শন করবে বা "tty নয়" লিখবে


ttyএর ম্যানুয়াল পৃষ্ঠা থেকে বর্ণনাটি "স্ট্যান্ডার্ড ইনপুটটিতে সংযুক্ত টার্মিনালের ফাইলের নাম মুদ্রণ করুন"। যদি আপনার স্ক্রিপ্টের স্টিডিনটি পাইপ হয় তবে এই পরীক্ষাটি ব্যর্থ হবে, ফলস্বরূপ আপনার প্রোগ্রাম হ'ল কেবলমাত্র তার ইনপুটটি পাইপ থেকে আসার কারণে এটির আউটপুটে রঙিন মুদ্রণ বন্ধ করে দেয় । হতে পারে (ইংরাজীতে: "স্টাডাউটটি টার্মিনালের সাথে সংযুক্ত?") আপনি কী চান? এই ভাবে আপনি রং পেতে শুধুমাত্র যদি আউটপুট টার্মিনাল যাচ্ছে, এবং আপনি অদ্ভুত টার্মিনাল কোড দেখতে পাবেন না যদি আপনি একটি ফাইল অথবা এটি নল মাধ্যমে বলে তার আউটপুট পুনর্নির্দেশ, । test -t 1less
থুডুডাবাইডস

6

আমার জন্য, অ্যাড

export TERM=xterm

থেকে /etc/profileশুধু সমস্যার সমাধান ছিল। আসলে, ত্রুটিটি আমাদের একটি ইঙ্গিত দিয়েছে:No value for $TERM


4

[ ভিন্ন পরিস্থিতি, তবে অনুসন্ধান ইঞ্জিন আমাকে প্রথমে এখানে নিয়ে যায়]

যখন " টিপুট: ER TERM এর কোনও মূল্য নেই এবং নো-টি নির্দিষ্ট নেই " ত্রুটি ডকার পাত্রে ঘটে (আমার জন্য, জেডশ শেল কলিং খোলার সময় docker exec -it <container> zsh(-আই ইন্টারেক্টিভের জন্য)) ভেরিয়েবলটি সেট করা ছিল ENV TERM xterm-256colorএই চিত্রের জন্য ডকফায়াইলের মতো ।

মত RUN export TERM=xterm-256color বা RUN echo "export TERM=xterm-256color" >> ~/.zshrcসফল হয়নি। TERM এর জন্য অন্যান্য মানগুলিও সম্ভব।


3

টার্মিনাল খোলার চেষ্টা করুন (যা tty1 এমনকি করবে কি না) এবং এই লাইনটি চালান

sudo update-alternatives --config x-terminal-emulator

এক্স উইন্ডোর জন্য আপনাকে ডিফল্ট টার্মিনাল এমুলেটারের পছন্দ উপস্থাপন করা হবে। নম্বর নির্বাচন করে একটি চয়ন করুন এবং আপনার কাজ শেষ হয়ে গেলে পুনরায় বুট করুন।

do সুডো আপডেট-বিকল্পগুলি - কনফিগ এক্স-টার্মিনাল-এমুলেটর
বিকল্প এক্স-টার্মিনাল-এমুলেটরের জন্য 6 টি পছন্দ রয়েছে (সরবরাহকারী / ইউএসআর / বিন / এক্স-টার্মিনাল-এমুলেটর)।

  Selection    Path                             Priority   Status
------------------------------------------------------------
  0            /usr/bin/gnome-terminal.wrapper   40        auto mode
  1            /usr/bin/gnome-terminal.wrapper   40        manual mode
  2            /usr/bin/koi8rxterm               20        manual mode
* 3            /usr/bin/lxterm                   30        manual mode
  4            /usr/bin/sakura                   40        manual mode
  5            /usr/bin/uxterm                   20        manual mode
  6            /usr/bin/xterm                    20        manual mode

Press enter to keep the current choice[*], or type selection number:  

আমি যখন এটি চেষ্টা করি, এটি আমাকে বলে "লিঙ্ক গ্রুপের এক্স-টার্মিনাল-এমুলেটরটিতে কেবল একটি বিকল্প আছে [...] কনফিগার করার মতো কিছুই নেই"। এটি আমার কুবুন্টু মেশিনে রয়েছে।
সিলডোরথ

অন্য একটি টার্মিনাল এমুলেটর ইনস্টল করার চেষ্টা করুন, উদাহরণস্বরূপ gnome-terminalবাsakura
সের্গি কলডায়াজিনি

আমার সত্যিকার অর্থে একই সমস্যা ছিল। আমি নির্বাচন করেছি sakura। যাইহোক, এটি জিনোম টার্মিনাল মোড়কে সমস্যা বলে মনে হচ্ছে; যদি তাই হয় তবে কেন এটি ঠিক করবেন না?
jjmerelo

এটি আসলে সমস্যার সমাধান করে না।
jjmerelo

2
@jjmerelo পরে ওপি তার উত্তরে প্রকাশের সাথে সাথে তার .bashrc ফাইলে লাইন রয়েছে যা ত্রুটি দিচ্ছিল। জিনোম টার্মিনাল মোড়কের বিষয়টি হওয়া উচিত নয়। আমার অনুমান প্রাথমিকভাবে ছিল যে $ টিআরএম ভেরিয়েবল সেট করা হয়নি, যা অন্য একজন ব্যবহারকারী গুনার তার উত্তরে উল্লেখ করেছেন।
সের্গেই কোলোডিয়াজনি

1

ত্রুটি ডায়লগটি বাগ # 678421 ঠিক করার কারণে হয় , সুতরাং এটি আমার দোষ। ;) এটি আপনাকে আপনার কনফিগারেশন ফাইলের কিছু কমান্ডের কারণে ত্রুটি সম্পর্কে বলে। আপনি যদি শীর্ষে স্ক্রোল করেন তবে আপনি দেখতে পাচ্ছেন কোন ফাইলটি ত্রুটি বার্তাগুলির কারণ করছে।

সতর্কতার ডায়ালগটি থেকে মুক্তি পাওয়ার জন্য সম্ভবত সার্জের উত্তর যথেষ্ট।

সম্পাদনা:

আপডেট হওয়া প্রশ্নের কারণে কয়েকটি জিনিস যুক্ত করতে চাই।

আগের মত নয়, /usr/sbin/lightdm-sessionএখন বাশ অধীনে চালিত হয় (পূর্বে sh) এজন্য এর সসোর্সিং এর ~/.profileফলাফলগুলি ~/.profileসোর্সিংয়ের ক্ষেত্রে ~/.bashrc। সম্ভবত এর অর্থ হ'ল ডিফল্ট সামগ্রীগুলির ~/.profileপরিবর্তন করা উচিত।

এটি ঠিক করার জন্য আপনি সবচেয়ে সহজ কাজটি হ'ল। TERM সেট করা থাকলে কেবলমাত্র tput কল করা উচিত suggested


আমি checking TERM সেট করা আছে কিনা তা যাচাই করার চেষ্টা করেছি, তবে এটি কার্যকর হবে বলে মনে হচ্ছে না।
সিলডোরথ

@ সিলডোর্থ: আপনি কি দয়া করে আমাদের এটি করার জন্য সঠিক কোডটি দেখাতে পারেন? (দয়া করে আপনার প্রশ্নটি আবার সম্পাদনা করুন))
গুনার এইজালমারসন

প্রশ্নে যুক্ত হয়েছে
সিলডোরথ

@ সিলডোরথ: দেখেছি সম্ভবত এটি হ'ল কারণ টিপুটটিকে উপ-প্রক্রিয়াগুলিতে ডাকা হয়। (কেবল একটি অনুমান।) যাইহোক, আপনি এটির মোকাবেলার জন্য একটি দুর্দান্ত উপায় খুঁজে পেয়েছেন।
গুনার হেজালমারসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.