2012-03-04 23 views
5

Tôi đang sử dụng Lion. Tôi có một lỗi mà kết quả đầu ra trên tất cả các phiên Terminal mới:Làm thế nào tôi có thể loại bỏ thứ gì đó chạy trên mọi phiên thiết bị đầu cuối mới?

-bash: __rvm_add_to_path: command not found 

Nó một tài khoản người dùng mới gần như thương hiệu .. RVM được cài đặt trên các tài khoản khác trên máy tính này .. ~/.bashrc & ~/.bash_profile là cả hai trống .. đặt ra của env là:

TERM_PROGRAM=Apple_Terminal 
SHELL=/bin/bash 
TERM=xterm-256color 
TMPDIR=/var/folders/ry/8zsyknmx7dj4_2zzvn1n71500000gn/T/ 
Apple_PubSub_Socket_Render=/tmp/launch-jsfKPw/Render 
TERM_PROGRAM_VERSION=303 
TERM_SESSION_ID=3EBC0F1A-9867-41E5-8873-75E84B9F712F 
USER=incorvia 
COMMAND_MODE=unix2003 
SSH_AUTH_SOCK=/tmp/launch-ZQqgPj/Listeners 
Apple_Ubiquity_Message=/tmp/launch-u3d1lp/Apple_Ubiquity_Message 
__CF_USER_TEXT_ENCODING=0x1F5:0:0 
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin 
PWD=/bin 
LANG=en_US.UTF-8 
HOME=/Users/incorvia 
SHLVL=1 
LOGNAME=incorvia 
DISPLAY=/tmp/launch-0B0I8s/org.x:0 
_=/usr/bin/env 

Tôi không thấy gì liên quan đến RVM ở đây .. nơi khác tôi có thể xem?

=====

/etc/bashrc

# System-wide .bashrc file for interactive bash(1) shells. 
if [ -z "$PS1" ]; then 
    return 
fi 

PS1='\h:\W \u\$ ' 
# Make bash check its window size after a process completes 
shopt -s checkwinsize 
# Tell the terminal about the working directory at each prompt. 
if [ "$TERM_PROGRAM" == "Apple_Terminal" ] && [ -z "$INSIDE_EMACS" ]; then 
    update_terminal_cwd() { 
     # Identify the directory using a "file:" scheme URL, 
     # including the host name to disambiguate local vs. 
     # remote connections. Percent-escape spaces. 
     local SEARCH=' ' 
     local REPLACE='%20' 
     local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}" 
     printf '\e]7;%s\a' "$PWD_URL" 
    } 
    PROMPT_COMMAND="update_terminal_cwd; $PROMPT_COMMAND" 
fi 

=========

cố định ...

Ở dưới cùng của tôi/etc/profile nó đã được tìm nguồn cung ứng /etc/profile.d/rvm.sh

Không biết làm thế nào mà đã đến đó ...

+0

Bạn đã xem '/ etc/bashrc' chưa? – simont

+0

Tôi đã thêm đầu ra của/etc/bashrc – Inc1982

+0

Kiểm tra [liên kết này] (http://www.linuxfromscratch.org/blfs/view/6.3/postlfs/profile.html) cho các địa điểm khác; '/ etc/profile' có lẽ? Nó có nhiều khả năng là một cấu hình toàn cầu hơn là một người dùng cụ thể. – simont

Trả lời

11

Bash tải một loạt tệp trong khi khởi động. Bạn có thể tìm thấy tổng quan tốt về quy trình khởi động bash here.

Nói chung, các thiết lập toàn cầu, /etc/profile, /etc/bashrc, và các thiết lập cá nhân liên quan, ~/.profile~/.bashrc được nạp, mặc dù đó là hơi phân phối phụ thuộc (và trên Mac OS X, ví dụ, theo mặc định /etc/profile không tồn tại).

Từ trang RVM Installation:

Multi-User:

Chức năng RVM sẽ được tự động cấu hình cho mỗi người dùng trên hệ thống nếu bạn cài đặt như là người chủ. Điều này được thực hiện bằng cách tải /etc/profile.d/rvm.sh khi đăng nhập. Hầu hết các bản phân phối Linux mặc định phân tích cú pháp/etc/profile chứa logic để tải tất cả các tệp nằm trong thư mục /etc/profile.d/. Khi bạn đã thêm người dùng bạn muốn có thể sử dụng RVM vào nhóm rvm, những người dùng đó PHẢI đăng xuất và đăng nhập để giành được tư cách thành viên nhóm rvm vì thành viên nhóm chỉ được hệ điều hành đánh giá lúc đăng nhập ban đầu.

Tôi đoán rằng mục đích sử dụng khác đã được cài đặt ở chế độ Multi-User; /etc/profile có thể tải /etc/profile.d/rvm.sh.

Để ngăn chặn nó được nạp, bạn có thể loại bỏ các dòng source RVM từ /etc/profile - điều này sẽ ngăn chặn nó được nạp cho tất cả người dùng , mặc dù.

4

Đối với các tài khoản đó có một hồ sơ làm việc, tôi đã có .rvmrc sau:

[email protected]:~# cat .rvmrc 
export rvm_prefix="/usr/local/lib/sc" 
export rvm_path="/usr/local/lib/sc/rvm" 

Để nhận được lỗi để đi cho các tài khoản khác của tôi, tôi chỉ đơn giản là sao chép tập tin này vào các tài khoản khác và cố định các điều khoản (chown johndoe: johndoe /home/johndoe/.rvmrc) ...

1

Trong Ubuntu 12.04, theo mặc định, /etc/profile.d/rvm.sh sẽ không được tải khi bắt đầu một thiết bị đầu cuối mới. Vì vậy, mọi thời gian, khi bắt đầu một termail mới, cmd như sau phải được sử dụng để bắt đầu RVM:

source /etc/profile.d/rvm.sh 

Và có hai cách để giải quyết nó:

  1. mở một terminal- mới> ngay click và chọn Profiles-> Profile Preferences-> Title và Command-> chọn "Run command as a login shell".

  2. mở một terminal- mới> cmd chạy như sau thì /etc/profile.d/rvm.sh sẽ được tự động nạp trong một nhà ga mới:

    echo '[[-s "/ etc/profile.d/rvm.sh "]] & &. "/etc/profile.d/rvm.sh" # tải RVM chức năng' >> ~/.bashrc

Theo một số lời giải thích here để nói rằng giải pháp 1 không phải là một tốt đẹp, nhưng thứ 2 được đề nghị.

Vì vậy, trong chiều ngược lại, nếu bạn không muốn nhà ga để chạy một cái gì đó trong một nhà ga mới, bạn cần phải kiểm tra xem tải auto được coursed bằng hai cách:

  1. kiểm tra xem "Chạy lệnh dưới dạng shell đăng nhập" được chọn và bỏ chọn nó.

  2. mở tệp ~/.bashrc, tìm các dòng có liên quan tải chức năng và xóa nó.

0

Tôi đã có cùng một tệp (/etc/profile.d/rvm.sh) từ bản cài đặt rvm trước đó. Việc xóa tập tin đó cũng làm việc cho tôi.

Để hiểu rõ hơn, việc đăng xuất khỏi trình bao có vẻ là bắt buộc.

0

Trong thay đổi /etc/profile bạn dòng:

source /etc/profile.d/rvm.sh

thành:

if [ "${SHELL}" != "/bin/sh" ]; then 
    source /etc/profile.d/rvm.sh 
fi 

Tại sao?

Trong Mac OS X, vỏ siêu người mặc định() là vỏ POSIX, không phải là Bash thuần túy. Việc thêm điều kiện như vậy sẽ vô hiệu hóa rvm cho (có thể) vỏ hệ thống nhại /bin/sh, được quản trị viên hệ thống sử dụng. Điều đó tốt. Nếu bạn muốn cài đặt thứ gì đó bằng tài khoản của root, bạn luôn có thể nhập bash và sau đó rvm … trong dòng lệnh.

0

Debian 6.1 quét tệp /etc/profile.d/ cho tất cả các tệp .sh và bao gồm chúng, vì vậy không có danh sách cho rvm trong bất kỳ hồ sơ hoặc tệp .bashrc ở bất kỳ đâu. Xóa rvm.sh khỏi /etc/profile.d/ giải quyết vấn đề này.

0

nếu bạn có ZSH hoặc OH-MY-ZSH, thì bạn cần phải xóa nguồn /etc/profile.d/rvm.sh từ /etc/zprofile

Các vấn đề liên quan