আমাকে "/ বিন / ব্যাশ - লগিন" চালানোর দরকার কেন?


12

আমি সবেমাত্র একটি নতুন উবুন্টু 13.10 সার্ভারটি রুবি 2.1.1 এর মাধ্যমে ইনস্টল করেছি rvm

সমস্যাটি হ'ল আমি যখনই "রেলস" ব্যবহারকারীর সাথে স্যুইচ করি (যে ব্যবহারকারীকে আমি রুবি এবং রেলগুলি ইনস্টল করেছি) /bin/bash --loginউবুন্টু যে রুবি, রেলগুলি সনাক্ত বা rvmইনস্টল করা হয়েছে তা স্বীকার করার আগে আমাকে চালনা করতে হবে ।

আশা করি কেউ জানে:

  1. উপরের আদেশটি কী করে?
  2. আমার কেন এটি চালানো দরকার?
  3. এবং এটি একবার এবং সর্বদা সমাধান করার জন্য আমি কী করতে পারি? :)

কোন সাহায্য প্রশংসা করা হয়!


2
আপনি কীভাবে ব্যবহারকারীর "রেল" (সাদামা su? বা এর মতো su -lবা কিছু su --?) এ স্যুইচ করছেন ? "রেল" ব্যবহারকারীর জন্য লগইন শেল কী? আপনি যদি ব্যবহারকারীর পথ পরিবর্তনশীল পরিবর্তন হয়নি এবং যদি তাই হয় যা ফাইলে ( ~/.profileবা ~/.bashrcবা ~/.bash_profileবা ...?)
steeldriver

আমি এখন দেখছি যে সমস্যাটি কেবল তখনই ঘটে যখন আমি রুল থেকে রেল ব্যবহারকারীর কাছে স্যুইচ করতে su কমান্ডটি ব্যবহার করি। আমি যখন রেল ব্যবহারকারীদের সাথে প্রবেশ করি তখন এই সমস্যাটি ঘটে না। তবে আমি এখনও জানতে চাইব / বিন / ব্যাশ - লগিন কী করে। :)
ওলে হেনরিক স্কোগ্রস্টম

উত্তর:


11

দেখে মনে হচ্ছে যে সিস্টেমটি ইনস্টল করা রুবি উপাদানগুলি সন্ধান করার জন্য প্রয়োজনীয় পরিবেশটিকে কোনও ফাইলে নির্দিষ্ট করা হয়েছে যা কেবল লগইন শেলগুলির জন্য পড়তে পারে। লগইন শেল এবং লগ-ইন না করা শেলগুলির মধ্যে পার্থক্য সম্পর্কে বাশ ম্যানুয়াল পৃষ্ঠাটিতে এটি বলা আছে:

INVOCATION
   A  login shell is one whose first character of argument zero is a -, or
   one started with the --login option.

এবং

   When bash is invoked as an interactive login shell, or as a non-inter
   active shell with the --login option, it first reads and executes  com
   mands  from  the file /etc/profile, if that file exists. After reading
   that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile,
   in  that order, and reads and executes commands from the first one that
   exists and is readable.  

যেহেতু

   When an interactive shell that is not a login shell  is  started,  bash
   reads  and  executes  commands  from /etc/bash.bashrc and ~/.bashrc, if
   these files exist. 

সুতরাং রুবি পরিবেশের ভেরিয়েবলগুলি /home/rails/.profileবা /etc/profileউদাহরণস্বরূপ থাকলে সেগুলি শেল পরিবেশে যুক্ত হবে

  • স্পষ্টভাবে su -l railsবা লগইন শেল ব্যবহার করে বা su --login railsশর্টহ্যান্ড ব্যবহার করেsu - rails
  • যখন ব্যবহারকারী railsএসএসএইচ এর মাধ্যমে লগ ইন করে
  • bash --loginলগইন করার পরে একটি সাব-শেল শুরু করে

আপনি যদি ব্যবহারকারীটিতে স্যুইচ করেন তা নির্বিশেষে রুবি পরিবেশ নির্ধারণ করতে চান তবে আপনি railsপ্রাসঙ্গিক পরিবর্তনশীল সংজ্ঞাটি ব্যবহারকারীর ~/.bashrcপরিবর্তে সরিয়ে নিতে পারেন।


হুঁ, ঠিক আছে, আমি মনে করি আমার শেষ অংশের একটি উদাহরণ দরকার। আমি লিনাক্স এবং উবুন্টুতে নতুন। প্রাসঙ্গিক পরিবর্তনশীল সংজ্ঞাগুলি কী কী? এগুলি এখন কোন ফাইলে লেখা আছে? আপনি আমাকে একটি উদাহরণ দিতে পারেন? এটি তাত্ত্বিকভাবে কিছুটা।
ওলে হেনরিক স্কোগ্রাস্টম

5

আমি জানি যে এই প্রশ্নটি 2 বছর আগে জিজ্ঞাসা করা হয়েছিল, তবে যদি কেউ (আমার মতো) এখনও এর মুখোমুখি হন: @ স্টিল্ড্রাইভার ঠিক আছে - আপনার 3 টির মধ্যে একটিতে আপনি যা হারিয়েছেন তা আপনি হারিয়ে ফেলছেন bashrc। আমার ক্ষেত্রে আমার এই লাইনটি আমার মধ্যে যুক্ত করার দরকার ছিল ~/.bashrc:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.