Tmux কি PATH ভেরিয়েবলকে "বাছাই" করে?


14

আমার একটি পুনরুত্পাদনযোগ্য সমস্যা:

  1. আমার প্যাটপ সেট আপ করুন ব্যাশ। প্রোফাইলে
  2. দ্বারা tmux শুরু tmux, tmux attachবা কোনো বৈকল্পিক
  3. প্রতিধ্বনি $ PATH এবং এটি একই উপাদানগুলির সাথে তবে ভিন্ন ক্রমে দেখুন

কিভাবে এই বন্ধ? এটি কি ব্যাখ্যা করে?

উত্তর:


29

আপনি যদি কোনও ম্যাকের উপরে থাকেন এবং যদি আপনি ভাবছেন যে /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/binআপনি যখন টিএমউक्स চালাচ্ছেন তখন কেন PATH- র কাছে চাপ দেওয়া হচ্ছে, কারণ এটি আপনার /etc/profileফাইল থেকে চালিত পথ_হেল্পার নামক একটি ইউটিলিটির কারণে ।

আপনি সহজেই উত্স না করে tmux (বা বরং বাশ) কে রাজি করতে পারবেন না /etc/profile(কোনও কারণে tmux সর্বদা লগইন শেল হিসাবে চলে, যার অর্থ / ইত্যাদি / প্রোফাইল পড়বে), তবে আপনি নিশ্চিত করতে পারেন যে পথ_সেইলপার ডনের প্রভাবগুলি আপনার পথের সাথে স্ক্রু লাগবে না।

কৌশলটি হ'ল পাথ_হেলপার চালানোর আগে PATH খালি রয়েছে তা নিশ্চিত করা। আমার ~/.bash_profileফাইলে আমার কাছে এটি রয়েছে:

if [ -f /etc/profile ]; then
    PATH=""
    source /etc/profile
fi

পাথ_হেল্পার কার্যকর করার আগে PATH কে সাফ করার আগে এটি আপনার (পূর্ববর্তী) বেছে নেওয়া পাঠ্যপথটিকে ডিফল্ট PATH প্রেরণ করা থেকে বিরত রাখবে এবং আপনার বাকী ব্যক্তিগত বাশ সেটআপ স্ক্রিপ্টগুলি (আরও নিচে কমান্ড .bash_profile, অথবা আপনি .bashrcএটি থেকে উত্সাহিত করেছেন যদি .bash_profile) আপনার সেটআপ করার অনুমতি দেবে your পাঠ অনুসারে।

আশা করি তা বোধগম্য ...


1
এটি পুরোপুরি আমার জন্য এটি করেছে! আমি if [ -n "$TMUX" ]নিজেই এটি একটি ক্লজের আড়ালে লুকিয়ে রেখেছি, তবে আমি ভাবছিলাম - [ -f /etc/profile ]আসলে কী তা গুরুত্বপূর্ণ ? এটি /etc/profileনিয়মিত ফাইল হিসাবে ধরে নেওয়া কি নিরাপদ নয় ?
রায়ান লু

1
@ রায়ানলিউ আপনি স্বাচ্ছন্দ্যে এর সাথে প্রতিস্থাপন -fকরতে পারেন -e, তবে আমি ব্যক্তিগতভাবে চেষ্টা করব না এবং কোনও স্ক্রিপ্ট থেকে একটি ফাইল উত্পন্ন করব না যা আমি লগইন করার পরে চালিত হয় যদি না এটি পরীক্ষা না করা হত। যদিও আমি আমার ব্যাশ স্ক্রিপ্টটি প্রচুর মেশিনে (এবং অপারেটিং সিস্টেমগুলি) পুনরায় ব্যবহার করতে চাই না, তাই আমি নিশ্চিত করতে চাই যে তারা বুলেট প্রুফ। আমি কল্পনা করতে পারি কিছু অন্যান্য ইউনিক্স রূপগুলি এটিকে অন্য কিছু বলে call
গ্রাহাম অ্যাশটন

ধন্যবাদ! এটি আমাকে পাগল করে তুলছিল এবং সেই ছোট্ট স্নিপেটটি আমার ~/.bash_profileআনীত বিচক্ষণতার শীর্ষে রেখেছিল আমার সুখী tmux জগতে।
hoosierEE

আপনি সিস্টেম ডিফল্টগুলি সাথে বিশৃঙ্খলা করতে না চান, set -g default-command "${SHELL}".tmux.confবাহিনীর অ লগইন শাঁস ব্যবহার করতে tmux। আমি যাইহোক, সেগুলির মধ্যে পয়েন্টটি দেখতে পাচ্ছি না, যেহেতু আপনি ইতিমধ্যে লগ ইন করার পরে সাধারণত tmux খুলুন
সন্ধানকারী_আফ_ব্যাকন

5

না; বাছাই $PATHকরা খুব পাগল জিনিস হবে কারণ অনেকগুলি সিস্টেম তার ব্যবহারকারী-সেট অর্ডারে নির্ভর করে।

যাইহোক, tmux নেই "লগইন" মোডে আপনার শেল শুরু, যার ফলে ~/.profilesourced করা আবার । এর অর্থ হ'ল যদি আপনার কাছে PATH=/my/dir:/another/dir:$PATHসেই ফাইলে কিছু থাকে তবে এটি আবার করা হবে , ফলস্বরূপ $ PATH রয়েছে /my/dir:/another/dir:/my/dir:/another/dir:(etc.)। এটি এড়াতে, আপনি পরীক্ষা করতে অন্য পরিবর্তনশীল ব্যবহার করতে পারেন:

if [ "$_SKIP_PROFILE" ]; then
    return 0
else
    export _SKIP_PROFILE=y
fi

export PATH="/my/dir:/another/dir:$PATH"

0

@ গ্রাহাম অ্যাশটন আপনার ধারণার জন্য ধন্যবাদ

আমার পরামর্শটি হ'ল আপনি রেখেছেন

if [ -f /etc/profile ]; then
    PATH=""
    source /etc/profile
fi

এটির শীর্ষে আপনার .zshrc ফাইলটিতে।

নিশ্চিত করুন যে আপনার

export NVM_DIR="$HOME/.nvm"
. "/usr/local/opt/nvm/nvm.sh"

নিচে.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.