О.профиль Баш.bashrc, а где должен быть написан псевдоним? [дубликат]




Возможные Дубликаты:
в чем разница между ними .bashrc, .bash_profile, а .окружающая среда?






кажется, что если я использую



alias ls='ls -F'


внутри .bashrc на Mac OS X, то вновь созданная оболочка не будет иметь этот псевдоним. Мне нужно набрать bash снова и этот псевдоним будет использоваться.



и если я войду в Linux на хостинге компании, то .bashrc файл имеет строку комментария, которая говорит:




для оболочки без входа




и .bash_profile файл имеет комментарий, который говорит




для входа в оболочку




так где же должны быть написаны псевдонимы? Почему мы отделяем оболочки входа в систему, а не логин Шелл?



некоторые веб-страницы говорят использовать .bash_aliases, но это не работает на Mac OS X, кажется.

557   4  

4 ответов:

причина, по которой вы отделяете логин и non-login оболочка, потому что .bashrc файл перезагружается каждый раз, когда вы запускаете новую копию Bash. Элемент .profile файл загружается только тогда, когда вы либо входите в систему, либо используете соответствующий флаг, чтобы сказать Bash действовать как оболочка входа.

лично

  • я положил мои PATH настройка в .profile file (потому что я иногда использую другие оболочки);
  • я ставлю свои псевдонимы Bash и функции в мой .bashrc file;
  • я поставил этот

    #!/bin/bash
    #
    # CRM .bash_profile Time-stamp: "2008-12-07 19:42"
    #
    # echo "Loading ${HOME}/.bash_profile"
    source ~/.profile # get my PATH setup
    source ~/.bashrc  # get my Bash aliases
    

    в своем .

О, и причина, по которой вам нужно ввести bash снова, чтобы получить новый псевдоним, это то, что Bash загружает ваш .bashrc файл, когда он запускается, но он не перезагружает его, если вы не скажете ему. Вы можете перезагрузить .bashrc файл (и не нужна вторая оболочка), набрав

source ~/.bashrc

который загружает .bashrc файл, как если бы вы набрали команды прямо к Башу.

проверить http://mywiki.wooledge.org/DotFiles за отличный ресурс по теме помимо man bash.

резюме:

  • вы входите только один раз, и вот когда ~/.bash_profile или ~/.profile читается и выполняется. Поскольку все, что вы запускаете из своей оболочки входа, наследует среду оболочки входа, вы должны поместить все свои переменные среды там. Как LESS,PATH,MANPATH,LC_*, ... Например, см.: мой .profile
  • после входа в систему, вы можете запустить еще несколько оболочек. Представьте себе вход в систему, запуск X и в X запуск нескольких терминалов с оболочками bash. Это означает, что ваша оболочка входа запустила X, которая унаследовала переменные среды вашей оболочки входа, которые запустили ваши терминалы, которые начали ваши оболочки bash без входа. Ваши переменные среды были переданы по всей цепочке, поэтому ваши оболочки без входа в систему не нужно загружать их больше. Оболочки без входа только выполнить ~/.bashrc, а не /.profile или ~/.bash_profile, именно по этой причине, так что там определить все, что применяется только к bash. Это функции, псевдонимы,bash-только переменные, такие как HISTSIZE (это не переменная окружения, не экспортируйте ее!) параметры оболочки с set и shopt и т. д. Например, см.: мой .bashrc
  • теперь, как часть особенности UNIX, login-shell не выполняется ~/.bashrc, но только ~/.profile или ~/.bash_profile, Так что вы должны вручную источника, что один из последних. Вы увидите, что я делаю это в моем ~/.profile тоже: source ~/.bashrc.

С главной страницы bash:

когда bash вызывается как интерактивная оболочка входа, или как неинтерактивная оболочка с помощью , Он сначала читает и выполняет команды из файла /etc/profile, если этот файл существует. После прочтения этого файла, он ищет ~/.bash_profile,~/.bash_login, и ~/.profile, в таком порядке, и читает и выполняет команды с первого раза тот, который существует и читается. Этот --noprofile опция может использоваться, когда оболочка начинает тормозить это поведение.

когда оболочка входа выходит, bash читает и выполняет команды из файл ~/.bash_logout, если он существует.

когда запускается интерактивная оболочка, которая не является оболочкой входа, bash читает и выполняет команды из ~/.bashrc, если этот файл существует. Этот может быть заблокирован с помощью . Элемент --rcfile параметры файла заставит bash читать и выполнять команды из файла вместо ~/.bashrc.

таким образом, если вы хотите получить одинаковое поведение как для оболочек входа, так и для интерактивных оболочек без входа, вы должны поместить все свои команды в любой .bashrc или .bash_profile, а затем есть другой файл источник первый.

.bash_profile загружается на "оболочку". Я не уверен, что это будет на OS X, но на Linux это либо X11, либо виртуальный терминал.

.bashrc загружается при каждом запуске Bash. Это где вы должны положить вещи, которые вы хотите загрузить, когда вы открываете новый терминал.окно приложения.

Я лично положил все в .bashrc Так что мне не нужно перезапускать приложение, чтобы изменения вступили в силу.

Comments

    Ничего не найдено.