У меня была похожая проблема с тем, что меня .profile
не запускали. Оказывается (как описано в этом ответе компании Apple StackExchange ), что если у вас есть .bash_profile
или .bash_login
файлы, то ваш .profile
будет игнорироваться Баш.
.profile и .bashrc не работают на моем Mac
Эта проблема у меня давно. После запуска терминала .profile, и .bashrc файл не работает (не выполняется). Не могли бы вы указать, где искать источник проблемы?
5 ответов на вопрос
- Популярные
- Новые
- С комментариями
- Активные
Я думаю, что это вопросы и ответы должны перейти к Superuser, но в любом случае:
Согласно разделу INVOCATION на странице руководства ,
/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); }
( "stderr.h"
Заголовок и err_*
подпрограммы ' ' - это пакет сообщений об ошибках, который я использую повсюду. jlss_basename()
Функция в основном такая же, как и в системных версиях, таких как POSIX <libgen.h>
.)
Хорошая информация выше, но я подумаю, что поделюсь некоторыми особенностями проблемы, с которой столкнулся, и найденным решением.
Необходимость: добавить каталог в PATH на OSX 10.8 (ML).
Проблема: руководство часто "мод. .Profile в вашем домашнем каталоге". Немного сбивает с толку, поскольку по умолчанию этот файл не существует в OSX. Вдвойне сбивает с толку, потому что как только вы добавляете оператор экспорта для добавления нового каталога в существующий PATH ... это не работает. Покрытый выше.
Решение: я добавил оператор экспорта в мой файл .bash_profile (также в домашнем каталоге).
Я уверен, что есть много способов снять кожу с этой кошкой. Этот работал для меня. Некоторое доверие внушало: .bash_profile уже существовал, и я мог видеть, что другое установленное программное обеспечение (например, Ruby) изменило его. Если есть лучшее решение, я буду рад услышать об этом!
Похожие вопросы
-
3
Ускорение загрузки OS X на годичной MBP
-
3
Как повторно связать резервную копию Airport Time Machine после перехода на новый Mac?
-
6
Как вы отключите звук запуска на Mac?
-
-
5
Почему мой Macbook сильно нагревается при использовании Boot Camp?
-
7
Есть ли в Mac OS X эквивалент Ctrl + Tab?
-
6
Способ переноса данных Time Machine на новый диск
-
13
Сброс положения Mac OS X Windows после отсоединения внешнего монитора
-
10
Программное обеспечение для резервного копирования для Mac OS X
-
5
Как удалить и удалить .kext в Mac OS X?
-
4
Как переназначить клавишу извлечения на клавиатуре MacBook, чтобы «удалить»?