Что такое файл конфигурации для оболочки sh на OS X? (т.е. ~ / .bash_profile для оболочки bash и т. д.)

1316
Bubbles

Rиспользует /bin/shсреду оболочки, и я запускаю скрипты (которые не могут быть изменены), которые вызывают gfortran-4.8вместо того, gfortranчтобы я создал alias. Я добавил следующую строку в мои /etc/profileи ~/.bash_profile:
alias gfortran-4.8='gfortran'

Тем не менее, вот вывод из терминала при вызове псевдонима gfortran-4.8:

my-MBP:~ myusername$ sh sh-3.2$ gfortran-4.8 --version sh: gfortran-4.8: command not found 

Звонок gfortranработает просто отлично:

sh-3.2$ gfortran --version gfortran: warning: couldn’t understand kern.osversion ‘14.4.0 GNU Fortran (GCC) 4.9.0 Copyright (C) 2014 Free Software Foundation, Inc. 

Если нет /etc/profileили ~/.bash_profileкуда должна aliasидти команда?

РЕДАКТИРОВАТЬ: Также попытался добавить псевдоним, ~/.bashrcно это тоже не сработало.

0
Какой у вас логин или ваша интерактивная оболочка? (возможно, узнайте с помощью `ps $$`) Если это `bash`, отредактируйте` ~ / .bashrc` Basile Starynkevitch 8 лет назад 2
`ps $$` выводит `bash`, и я попытался отредактировать` ~ / .bashrc`, но это тоже не сработало 8 лет назад 0
** Отредактируйте свой вопрос **, чтобы улучшить его. Не комментируйте это. Basile Starynkevitch 8 лет назад 0
1) добавить псевдоним в `~ / .bashrc` 2) включить его с помощью` source ~ / .bashrc` 3) попытаться вызвать псевдоним Eugeniu Rosca 8 лет назад 2
Есть ли способ включить это при запуске оболочки `sh`? Хотя это работает в Терминале, оно не работает в `R` даже после выполнения` system ('source ~ / .bashrc') `. Для `R` по умолчанию требуется оболочка` sh`. 8 лет назад 0
Использование программы `R` и ограничение на` sh` являются ключевыми предпосылками для вашей проблемы, и они должны быть упомянуты в первой строке описания. Eugeniu Rosca 8 лет назад 0
Возможно, вам следует рассмотреть возможность проверки некоторых конфигураций / настроек `.rprofile`, например, например [this] (http://www.r-bloggers.com/fun-with-rprofile-and-customizing-r-startup/) Eugeniu Rosca 8 лет назад 0

3 ответа на вопрос

1
glenn jackman

When you start bash with as sh (for example, if /bin/sh is a symbolic link to bash), then the shell will only read /etc/profile and ~/.profile. The shell will not read ~/.bash_profile or ~/.bashrc.

Search for the phrase "invoked with the name sh" in your bash man page.

1
IvoryNomad

When bash is invoked as */sh, only /etc/profile and $/.profile are read.

I have these lines in my .profile (using OS X):

if [ -n "$" ]; then # include ~/.bashrc if it exists if [ -f "$/.bashrc" ]; then . "$/.bashrc" fi fi 

My .bashrc contains (among other things) these lines:

if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi 

Now just create a .bash_aliases file with all your aliases in it.

0
johnsoga

it's usually simpler to just put all aliases and customizations to the shell into ~/.bashrc and then have your ~/.bash_profile source that file in it i.e. source .bashrc but if you make alias changes in your ~/.bashrc they will not take affect until you reload your shell or source you're ~/.bashrc file.