О.профиль Баш.bashrc, а где должен быть написан псевдоним? [дубликат]
Возможные Дубликаты:
в чем разница между ними .bashrc, .bash_profile, а .окружающая среда?
кажется, что если я использую
alias ls='ls -F'
внутри .bashrc на Mac OS X, то вновь созданная оболочка не будет иметь этот псевдоним. Мне нужно набрать bash снова и этот псевдоним будет использоваться.
и если я войду в Linux на хостинге компании, то .bashrc файл имеет строку комментария, которая говорит:
для оболочки без входа
и .bash_profile файл имеет комментарий, который говорит
для входа в оболочку
так где же должны быть написаны псевдонимы? Почему мы отделяем оболочки входа в систему, а не логин Шелл?
некоторые веб-страницы говорят использовать .bash_aliases, но это не работает на Mac OS X, кажется.
4 ответов:
причина, по которой вы отделяете логин и non-login оболочка, потому что
.bashrcфайл перезагружается каждый раз, когда вы запускаете новую копию Bash. Элемент.profileфайл загружается только тогда, когда вы либо входите в систему, либо используете соответствующий флаг, чтобы сказать Bash действовать как оболочка входа.лично
- я положил мои
PATHнастройка в.profilefile (потому что я иногда использую другие оболочки);- я ставлю свои псевдонимы Bash и функции в мой
.bashrcfile;я поставил этот
#!/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