.profile и.bashrc не работают на моем Mac

Эта проблема у меня давно. После запуска терминала.profile, и.bashrc файл не работает (не выполняется). Не могли бы вы указать, где я должен искать источник проблемы?

5 ответов

У меня была похожая проблема с моим .profile не быть запущенным Оказывается (как объяснено в этом ответе Apple StackExchange), что если у вас есть .bash_profile или же .bash_login файлы, то ваши .profile будет игнорироваться Bash.

Я думаю, что это вопросы и ответы должны перейти к Superuser, но в любом случае:

Согласно разделу ПРИЗНАНИЕ справочной страницы,

  • /etc/profile а также ~/.profile читается для интерактивной оболочки входа в систему, и
  • ~/.bashrc читается для интерактивной оболочки без логина.

Если ваш другой компьютер UNIX автоматически читает ~/.bashrc даже для интерактивной оболочки входа в систему, потому что в масштабе всей системы /etc/ profile есть строка, которая гласит ~/.bashrc, OS X для всей системы /etc/profile не один

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

. ~/.bashrc

в вашем ~/.profile,

Попробуйте найти их "вручную":

source ~/.profile

и посмотрим, что получится. Обратите внимание, что, как уже отмечали другие, .profile поступает из оболочек входа в систему, .bashrc - из оболочек без входа в систему; так что попробуйте один или другой, а не оба.

В настройках своего терминала проверьте на панели "Автозагрузка". У вас есть варианты:

Снаряды открываются с:

  • Оболочка для входа по умолчанию (/usr/bin/login)
  • Команда (полный путь)

Я выбрал "default"... если вы выбрали пользовательскую команду, это может быть фактором.

Следующий пункт, который нужно проверить, - запущена ли оболочка как оболочка входа в систему. Когда я делаю ps список, я вижу:

  PID TTY           TIME CMD
24088 ttys000    0:00.03 -sh
24614 ttys001    0:00.03 -sh
25127 ttys002    0:00.05 -sh
35544 ttys003    0:00.08 -sh
40926 ttys004    0:00.03 -sh

Ключевым моментом здесь является-'перед названием оболочки; это говорит оболочке для запуска через профиль и связанные вещи. Если вы не видите этого в своих текущих окнах, вам может потребоваться изменить настройки до тех пор, пока вы этого не сделаете.

Панель настроек в настройках терминала также содержит список параметров оболочки. У меня /bin/sh в моем списке.


Вам не нужно это

Если худшее приходит к худшему, вы можете поступить так же, как я делал это на некоторых других неработающих системах в прошлом - я создал программу 'loginsh', которую я мог запустить из windows, и она, в свою очередь, запустила бы выбранную мной оболочку с '-префикс, чтобы он работал как оболочка для входа.

#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include "stderr.h"
#include "jlss.h"

#ifndef DEFAULT_SHELL
#define DEFAULT_SHELL   "/bin/sh"
#endif /* DEFAULT_SHELL */

#ifndef MAX_SHELLBASENAME
#define MAX_SHELLBASENAME   256
#endif /* MAX_SHELLBASENAME */

#ifndef lint
static const char sccs[] = "@(#)$Id: loginsh.c,v 4.2 2005/06/22 19:44:07 jleffler Exp $";
#endif

int main(int argc, char **argv)
{
    char     *shell;
    char      shellname[MAX_SHELLBASENAME];

    err_setarg0(argv[0]);

    /* Which shell to use? */
    if ((shell = getenv("SHELL")) == (char *)0)
        shell = DEFAULT_SHELL;

    /* Set up argv[0] in new argument list; reuse old argv space */
    shellname[0] = '-';
    strcpy(&shellname[1], jlss_basename(shell));
    argv[0] = shellname;

    /* Execv must work -- the shell must be an executable program */
    execv(shell, &argv[0]);
    err_syserr("cannot execute shell %s\n", shell);

    /* NOTREACHED */
    return(EXIT_FAILURE);
}

(The "stderr.h" заголовок и err_*подпрограммы - это пакет сообщений об ошибках, который я использую везде.jlss_basename()функция в основном такая же, как и в системных версиях, таких как POSIX<libgen.h>.)

Хорошая информация выше, но я подумаю, что поделюсь некоторыми особенностями проблемы и решения, которое нашел.

Необходимость: добавить каталог в PATH на OSX 10.8 (ML).

Проблема: Руководство часто "мод.profile в вашем домашнем каталоге". Немного сбивает с толку, поскольку по умолчанию этот файл не существует в OSX. Вдвойне сбивает с толку, потому что как только вы добавляете оператор экспорта для добавления нового каталога в существующий PATH ... это не работает. Покрытый выше.

Решение: я добавил оператор экспорта в свой файл.bash_profile (также в домашнем каталоге).

Я уверен, что есть много способов снять кожу с этой кошкой. Этот работал для меня. Некоторое доверие внушало:.bash_profile уже существовал, и я мог видеть, что другое установленное программное обеспечение (например, Ruby) изменило его. Если есть лучшее решение, я буду рад услышать об этом!

Другие вопросы по тегам