“/ bin / bash --login”을 실행해야하는 이유


12

방금 루비 2.1.1을 설치하여 새로운 우분투 13.10 서버를 설치했습니다 rvm.

문제는 사용자 "레일"(루비와 레일을 설치 한 사용자)로 전환 할 때마다 /bin/bash --login우분투가 루비, 레일 또는 rvm설치를 인식하기 전에 실행 해야한다는 것입니다 .

누군가가 알고 있기를 바랍니다.

  1. 위의 명령은 무엇을합니까?
  2. 왜 실행해야합니까?
  3. 한 번에 해결하기 위해 무엇을 할 수 있습니까? :)

도움을 주셔서 감사합니다!


2
사용자 "레일"(일반 su? 또는 비슷한 su -l또는 su --?)로 어떻게 전환하고 있습니까? 사용자 "레일"의 로그인 쉘은 무엇입니까? (당신은 사용자의 PATH 변수를 수정하고 만약 그렇다면 어떤 파일에서 한 ~/.profile또는 ~/.bashrc~/.bash_profile? 나 ...)
steeldriver

su 명령을 사용하여 root에서 rails 사용자로 전환 할 때만 문제가 발생한다는 것을 알았습니다. Rails 사용자와 대화 할 때이 문제가 발생하지 않습니다. 그러나 나는 여전히 / bin / bash --login이 무엇을하는지 알고 싶습니다. :)
Ole Henrik Skogstrøm

답변:


11

시스템이 설치된 루비 구성 요소를 찾는 데 필요한 환경 인 것 같습니다. 로그인 쉘에 대해서만 읽을 수있는 파일에 지정되어 있습니다. bash 매뉴얼 페이지에는 로그인 쉘과 비 로그인 쉘의 차이점에 대해 설명합니다.

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
  • 사용자가 railsSSH를 통해 로그인 할 때
  • bash --login로그인 후 와 같이 서브 쉘을 시작함으로써

user로 전환하는 방법에 관계없이 루비 환경을 설정 rails하려면 관련 변수 정의를 사용자 ~/.bashrc대신 이동할 수 있습니다.


흠, 나는 마지막 부분의 예가 필요하다고 생각합니다. 나는 리눅스와 우분투를 처음 사용합니다. 관련 변수 정의는 무엇입니까? 그들은 지금 어떤 파일로 작성 되었습니까? 예를 들어 주시겠습니까? 이것은 약간 이론적 인 것입니다.
Ole Henrik Skogstrøm

5

나는이 질문이 2 년 전에 요청되었다는 것을 알고 있지만, (나 같은) 누군가가 여전히 그것을 직면하고있는 경우 : @steeldriver가 맞습니다-당신은 당신이 bashrc그 3 개의 파일 중 하나에 가지고있는 무언가가 빠져 있습니다. 내 경우에는이 줄을 내 안에 추가해야했습니다 ~/.bashrc.

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.