এসএসএইচ (উবুন্টু) ব্যবহার করার সময় ~ /। প্রোফাইলটি লোড হয় না


22

আমি যে সমস্যার সমাধান করতে চাইছিলাম তা প্রতিফলিত করার জন্য সম্পাদিত:

আমাকে আমার রুবি পরিবেশ স্থাপন করতে হবে যাতে আমি ক্যাপিস্ট্রানো মাধ্যমে viaুকতে পারি।

export PATH=$HOME/.rbenv/bin:$PATH
eval "$(rbenv init -)"

আমি এগুলিকে lo স্থাপন /। ধারনা?

আমি উবুন্টু 12.04 চালাচ্ছি।


মূল প্রশ্নটি ছিল:

আমি যখন লোকালহোস্টে অন্য অ্যাকাউন্টে প্রবেশ করি, এটি আমার। প্রোফাইলটি লোড করে না। কীভাবে আমি ssh এটি লোড করতে বাধ্য করতে পারি? আমি উবুন্টু 12.04 চালাচ্ছি।

উত্তর:


15

আপনি স্পষ্টভাবে নির্দিষ্ট করতে পারেন যে আপনি একটি ইন্টারেক্টিভ লগইন শেল শুরু করতে চান:

 ssh user@host bash --login -i 

"ভূমিকা" এর ~/.profile(। অথবা ~ / bash_profile) এবং .bashrcSSH জন্য কিছু অন্যান্য ফাইল, (দেখুন আছে man sshবিস্তারিত জানার জন্য):

~ / .Ssh / পরিবেশ

পরিবেশের ভেরিয়েবলের অতিরিক্ত সংজ্ঞা রয়েছে; পরিবেশ, উপরে দেখুন see

~ / .Ssh / RC

এই ফাইলের কমান্ডগুলি ব্যবহারকারীর শেল (বা কমান্ড) শুরু হওয়ার ঠিক আগে ব্যবহারকারী লগ ইন করার সময় ssh দ্বারা সম্পাদন করা হয়। আরও তথ্যের জন্য sshd (8) ম্যানুয়াল পৃষ্ঠাটি দেখুন।


"আপনি হতে পারেন" প্রায়শই সত্য হয় না, কারণ ssh অন্য কোনও সরঞ্জাম দ্বারা চালিত হয় (ধারাবাহিক সরবরাহ) এবং কমান্ডটি সহজেই পরিবর্তন করা যায় না।
জানু হুডেক

6

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

এছাড়াও, আপনি যদি কেবল স্থানীয় মেশিনে অন্য কোনও অ্যাকাউন্টে লগইন করতে চান তবে ssh সম্ভবত ওভারকিল। আপনি এর suপরিবর্তে বা অন্য কিছু ব্যবহার করতে চাইতে পারেন ।


3
মনে .bashrcহয় এটি লোড হয় না।
কেনারব

এটি ভুল। এটা তোলে হয় একটি লগইন শেল। ম্যান পৃষ্ঠা থেকে: "যদি কমান্ডটি নির্দিষ্ট করা থাকে তবে এটি লগইন শেলের পরিবর্তে দূরবর্তী হোস্টে কার্যকর করা হয়।"
এমকেজে

z / .zshenv আমার পক্ষে কাজ করে। unix.stackexchange.com/questions/4921/sh-startup-files-over-ssh
user91155

যখন ssh কে কমান্ড দেওয়া হয়, এটি একটি টিটিটি বরাদ্দ না করার জন্য ডিফল্ট হয় এবং তারপরে শেলটি "ইন্টারেক্টিভ" হয় না।
জানু হুডেক

4

ব্যাশ ব্যবহারের ফলে পড়া উচিত ~/.bashrc। নিম্নলিখিতটি ksh এবং sh (sh মোডে বাশ), বা আপনার ~/.bashrcলগইন চলাকালীন কার্যকর না হলে সহায়তা করতে পারে ।

~/.ssh/environmentSshd পরামর্শ নেয় (অনুমতিগুলির জন্য sshd_config (5) পরীক্ষা করুন) এবং ~/.ssh/sshrcবা ~/.ssh/rc। এই সেটআপ সম্ভাবনা দেয় ENV=~/.profileবা BASH_ENV=~/.profileএবংSSH_LOGIN=Y

ইন ~/.profileআমি নিম্নলিখিত বিন্যাস করেছি (প্রতিস্থাপন ENVসঙ্গে BASH_ENVযখন ব্যাশ ব্যবহার করে):


if [[ -n $SSH_LOGIN || -z $ENV ]]; then
     # Put here login initialization code
     unset SSH_LOGIN
     ENV=~/.profile
fi
 # Put here code thats get executed with each ksh/sh invocation


0

ব্যাশ ~/.profileকেবল তখনই পড়তে হয় যখন এটি লগইন শেল হয় এবং ~/.bash.bashrcকেবলমাত্র যদি এটির টার্মিনাল থাকে তবে ssh সহ একটি কমান্ডের সাহায্যে ডিফল্টরূপে সত্য হয় না। তবে সার্ভারে পরিবেশ নির্ধারণের জন্য আরও বেশ কয়েকটি অপশন রয়েছে, যা দুর্ভাগ্যক্রমে সিস্টেম সেটআপের উপর নির্ভর করে:

  • Zsh ~/.zshenvএমনকি এই ক্ষেত্রে পড়া; যদিও বাশের জন্য কোনও সম্পর্কিত কনফিগার ফাইল নেই।
  • তাহলে PermitUserEnvironmentবিকল্প হয় /etc/sshd_config, SSH পড়তে হবে ~/.ssh/environment। দুর্ভাগ্যক্রমে এই বিকল্পটি ডিফল্ট হয়ে যায়।
  • যদি ভিতরে pam_env.soডাকা user_readenv=1হয় /etc/pam.d/sshd, এটি পড়বে ~/.pam_environment। যদিও এটি মডিউলটির ডিফল্ট নয়, কমপক্ষে উবুন্টুতে একে বলা হয়
  • অন্য সমস্ত কিছু যদি ব্যর্থ হয়, আপনি command=একটি পরিবেশিত সেট করে এবং $SSH_ORIGINAL_COMMANDশেষে সঞ্চালিত একটি মোড়ক স্ক্রিপ্টকে কল করে অনুমোদিত কীগুলির ফাইলটিতে একটি নির্দেশিকা রাখতে পারেন (আই কমান্ডটি শেলের জন্য একটি, সুতরাং এখানে কার্যকর উপযুক্ত, তবে আমি নিশ্চিত নই) ।

0

আপনার সম্ভবত একটি আছে ~/.bash_profile, যা ওভাররাইড করে ~/.profile

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