Как я могу избавиться от чего-то, работающего на каждом новом сеансе терминала? - PullRequest
6 голосов
/ 04 марта 2012

Я использую Lion. У меня ошибка, которая выводится при каждом новом сеансе терминала:

-bash: __rvm_add_to_path: command not found

Это почти новая учетная запись пользователя .. RVM установлен на другой учетной записи на компьютере .. ~ / .bashrc & ~ / .bash_profile оба пустые .. выход env:

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

Я не вижу здесь ничего, связанного с RVM .. где еще я могу посмотреть?

=====

/ и т.д. / 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

=========

Фиксированный ...

В нижней части моего / etc / профиля был источник /etc/profile.d/rvm.sh

Не знаю, как это туда попало ...

Ответы [ 7 ]

12 голосов
/ 04 марта 2012

Bash загружает ряд файлов во время запуска. Хороший обзор процесса запуска bash можно найти здесь .

Как правило, загружаются глобальные настройки /etc/profile, /etc/bashrc и соответствующие персонализированные настройки ~/.profile и ~/.bashrc, хотя это немного зависит от распределения (и, например, в Mac OS X, по умолчанию /etc/profile не существует).

со страницы RVM :

Multi-User:

Функция rvm будет автоматически настроена для каждого пользователя в системе, если вы устанавливаете от имени пользователя root. Это достигается загрузкой /etc/profile.d/rvm.sh при входе в систему. Большинство дистрибутивов Linux по умолчанию используют синтаксический анализ / etc / profile, который содержит логику для загрузки всех файлов, находящихся в каталоге /etc/profile.d/. После добавления пользователей, которым вы хотите использовать RVM, в группу rvm, эти пользователи ДОЛЖНЫ выйти из системы и снова войти в нее, чтобы получить членство в группе rvm, поскольку членство в группах оценивается только операционной системой во время первоначального входа в систему.

Я предполагаю, что другое использование установлено в режиме Multi-User; /etc/profile вероятно загружает /etc/profile.d/rvm.sh.

Чтобы остановить загрузку, вы можете удалить строку source RVM из /etc/profile - это остановит ее загрузку для всех пользователей .

4 голосов
/ 29 ноября 2012

Для учетной записи с рабочим профилем у меня было следующее .rvmrc:

root@sc-27617:~# cat .rvmrc 
export rvm_prefix="/usr/local/lib/sc"
export rvm_path="/usr/local/lib/sc/rvm"

Чтобы ошибка исчезла для других моих учетных записей, я просто скопировал этот файл в другие учетные записи и установил разрешения (chown johndoe: johndoe /home/johndoe/.rvmrc)...

1 голос
/ 07 декабря 2012

В Ubuntu 12.04 по умолчанию файл /etc/profile.d/rvm.sh не будет загружаться при запуске нового терминала.Таким образом, каждый раз, когда запускается новый termail, для запуска rvm необходимо использовать cmd следующим образом:

source /etc/profile.d/rvm.sh

И есть два способа исправить это:

  1. откройте новый терминал-> щелкните правой кнопкой мыши и выберите Профили-> Настройки профиля-> Заголовок и Команда-> выберите «Выполнить команду как оболочку входа».

  2. открыть новый терминал->Запустите cmd следующим образом, после чего /etc/profile.d/rvm.sh будет автоматически загружен в новый терминал:

    echo '[[-s "/etc/profile.d/rvm.sh"]] &&."/etc/profile.d/rvm.sh" # Загрузить функцию RVM '>> ~ / .bashrc

В качестве некоторого объяснения здесь , чтобы сказать 1-е решениене очень хороший, но предлагается второй.

Таким образом, если вы не хотите, чтобы терминал запускал что-то в новом терминале, вам нужно проверить, выполняется ли автоматическая загрузкадвумя способами:

  1. проверьте, выбрана ли "Команда запуска в качестве оболочки входа в систему", и снимите ее выбор.

  2. , откройте ~ / .bashrcфайл, найдите строки, связанные с загрузкой функции и удалите ее.

0 голосов
/ 25 октября 2013

если у вас ZSH или OH-MY-ZSH, вам нужно удалить источник / etc / profile.d / rvm.sh из / etc / zprofile

0 голосов
/ 23 сентября 2013

Debian 6.1 сканирует файл /etc/profile.d/ для всех файлов .sh и включает их, поэтому ни в одном из профилей или файлов .bashrc нет ни одного списка для rvm. Удаление rvm.sh из /etc/profile.d/ решает эту проблему.

0 голосов
/ 10 июня 2013

В вашем /etc/profile измените строку:

source /etc/profile.d/rvm.sh

в

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

Почему?

В Mac OS X оболочкой суперпользователя по умолчанию (root) является оболочка POSIX, а не чистый Bash. Добавление такого условия отключит rvm для (возможно) emerygency shell /bin/sh, используемой системным администратором. Это хорошо. Если вы хотите установить что-либо, используя учетную запись root, вы всегда можете набрать bash и затем rvm … в командной строке.

0 голосов
/ 15 мая 2013

У меня был тот же файл (/etc/profile.d/rvm.sh) из предыдущей установки rvm.Удаление этого файла работало и для меня.

Ради тщательности, кажется, требуется выход из оболочки.

...