Эта проблема у меня давно. После запуска терминала .profile, и .bashrc файл не работает (не выполняется). Не могли бы вы указать, где я должен искать источник проблемы?
проверить , является ли это файлы имеют соответствующие разрешения
да ... вы правы причина была действительно глупой - неверные права доступа chmod + x ~ / .profile и все работает хорошо.
5
@xTrol: Это не имеет смысла, ~/.profileне требует разрешения на выполнение. (Оболочка получает его, но не выполняет). Попробуйте chmod -x ~/.profileи посмотрите, все ли еще работает.
Кит Томпсон
Ответы:
40
У меня была похожая проблема с тем, что меня .profileне запускали. Оказывается (как описано в этом ответе компании Apple StackExchange ) , что если у вас есть .bash_profileили .bash_loginфайлы, то ваш .profileбудет игнорироваться Баш.
Моя проблема заключалась в том, что я установил Python, который автоматически создал файл .bash_profile, из-за чего мой .profile не запускался.
5
Этот ответ помогает мне. .bash_loginбыл добавлен после того, как я установил rvm.
17
Я думаю, что это вопросы и ответы должны перейти к Superuser, но в любом случае:
Согласно разделу INVOCATION на странице руководства ,
/etc/profileи ~/.profileчитается для интерактивной оболочки входа в систему, и
~/.bashrc читается для интерактивной оболочки без логина.
Если ваш другой компьютер UNIX автоматически читает ~/.bashrcдаже для интерактивной оболочки входа в систему, то это потому, что во всей системе /etc/
profileесть строка, которая читает ~/.bashrc. OS X в масштабе всей системы /etc/profileне имеет ни одного.
Итак, если вы хотите запустить ~/.bashrcдаже для интерактивной оболочки входа в систему, вам нужно включить строку
И чтобы заполнить пропущенную часть здесь: Оболочка терминала (о которой был задан вопрос ОП) по умолчанию является интерактивной оболочкой входа в систему.
LarsH
3
Попробуйте найти их «вручную»:
source ~/.profile
и посмотрим, что получится. Обратите внимание, что, как уже отмечали другие, .profile поступает из оболочек входа в систему, .bashrc - из оболочек без входа в систему; так что попробуйте один или другой, а не оба.
Ключевым моментом здесь является ' -' перед именем оболочки; это говорит оболочке для запуска через профиль и связанные вещи. Если вы не видите этого в своих текущих окнах, вам может потребоваться изменить настройки до тех пор, пока вы этого не сделаете.
Панель настроек в настройках терминала также содержит список параметров оболочки. У меня / 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) изменило его. Если есть лучшее решение, я буду рад услышать об этом!
~/.profile
не требует разрешения на выполнение. (Оболочка получает его, но не выполняет). Попробуйтеchmod -x ~/.profile
и посмотрите, все ли еще работает.Ответы:
У меня была похожая проблема с тем, что меня
.profile
не запускали. Оказывается (как описано в этом ответе компании Apple StackExchange ) , что если у вас есть.bash_profile
или.bash_login
файлы, то ваш.profile
будет игнорироваться Баш.источник
.bash_login
был добавлен после того, как я установилrvm
.Я думаю, что это вопросы и ответы должны перейти к Superuser, но в любом случае:
Согласно разделу INVOCATION на странице руководства ,
/etc/profile
и~/.profile
читается для интерактивной оболочки входа в систему, и~/.bashrc
читается для интерактивной оболочки без логина.Если ваш другой компьютер UNIX автоматически читает
~/.bashrc
даже для интерактивной оболочки входа в систему, то это потому, что во всей системе/etc/ profile
есть строка, которая читает~/.bashrc
. OS X в масштабе всей системы/etc/profile
не имеет ни одного.Итак, если вы хотите запустить
~/.bashrc
даже для интерактивной оболочки входа в систему, вам нужно включить строкув вашем
~/.profile
.источник
Попробуйте найти их «вручную»:
и посмотрим, что получится. Обратите внимание, что, как уже отмечали другие, .profile поступает из оболочек входа в систему, .bashrc - из оболочек без входа в систему; так что попробуйте один или другой, а не оба.
источник
В настройках своего терминала проверьте на панели «Автозагрузка». У вас есть варианты:
Я выбрал «default» ... если вы выбрали пользовательскую команду, это может быть фактором.
Следующий пункт, который нужно проверить, - запущена ли оболочка как оболочка входа в систему. Когда я делаю
ps
список, я вижу:Ключевым моментом здесь является '
-
' перед именем оболочки; это говорит оболочке для запуска через профиль и связанные вещи. Если вы не видите этого в своих текущих окнах, вам может потребоваться изменить настройки до тех пор, пока вы этого не сделаете.Панель настроек в настройках терминала также содержит список параметров оболочки. У меня / bin / sh в моем списке.
Вам не нужно это
Если худшее приходит к худшему, вы можете поступить так же, как я делал это на некоторых других неработающих системах в прошлом - я создал программу 'loginsh', которую я мог запустить из windows, и она, в свою очередь, запустила бы выбранную мной оболочку с '
-
' префикс, чтобы он работал как оболочка для входа.(
"stderr.h"
Заголовок иerr_*
подпрограммы ' ' - это пакет сообщений об ошибках, который я использую повсюду.jlss_basename()
Функция в основном такая же, как и в системных версиях, таких как POSIX<libgen.h>
.)источник
Хорошая информация выше, но я подумаю, что поделюсь некоторыми особенностями проблемы и решения, которое нашел.
Необходимость: добавить каталог в PATH на OSX 10.8 (ML).
Проблема: руководство часто "мод .profile в вашем домашнем каталоге". Немного сбивает с толку, поскольку по умолчанию этот файл не существует в OSX. Вдвойне сбивает с толку, потому что как только вы добавляете оператор экспорта для добавления нового каталога в существующий PATH ... это не работает. Покрытый выше.
Решение: я добавил оператор экспорта в свой файл .bash_profile (также в домашнем каталоге).
Я уверен, что есть много способов снять кожу с этой кошкой. Этот работал для меня. Некоторое доверие внушало: .bash_profile уже существовал, и я мог видеть, что другое установленное программное обеспечение (например, Ruby) изменило его. Если есть лучшее решение, я буду рад услышать об этом!
источник