2016-03-13 3 views
0

Я нахожусь в OS X и, согласно man bash/etc/profile, является системной конфигурацией для оболочки bash./etc/profile не работает

Для тестирования целей я открыл этот файл до:

open_profile(){ 
    sudo chmod 777 /etc/profile 
} 

и добавил эхо, чтобы я мог увидеть, если это на самом деле работает.

Это не так:

# System-wide .profile for sh(1) 

echo "test_global" 

if [ -x /usr/libexec/path_helper ]; then 
    eval `/usr/libexec/path_helper -s` 
fi 

if [ "${BASH-no}" != "no" ]; then 
    [ -r /etc/bashrc ] && . /etc/bashrc 
fi 

Я не вижу эхо, когда я открываю Баш оболочки.

+2

'chmod 777' -> nonononono! Никогда не запускайте 'chmod 777'. Это практически никогда не требуется! Даже для «целей тестирования». Если файл доступен для чтения, он читается. Если он доступен для записи «пользователем» или «группой», который необходимо записать на него, тогда он доступен для записи. Существует абсолютно нулевая необходимость дать каждому разрешение на запись и забыть о «chmod», чтобы вернуться к чему-то здравомыслящему, точно так же, как транснациональные корпорации получают взломанные. Только не делай этого. Когда-либо. Я написал [введение разрешений Unix] (http://stackoverflow.com/a/35895436/660921). Пожалуйста, прочитайте! – Carpetsmoker

+0

Вы изменили свою оболочку по умолчанию? Что сообщает 'echo $ SHELL'? – mklement0

ответ

3

/etc/profile используется только для систем входа. Чтобы заставить винт для входа в систему добавить нелокальную оболочку add -login.

bash --login 

Когда Bash вызывается в качестве входа в оболочку, или в качестве нерегистрированной оболочки с опцией --login, он сначала считывает и выполняет команды из файла/и т.д./профиль, если этот файл существует. После прочтения этого файла он ищет ~/.bash_profile, ~/.bash_login и ~/.profile в этом порядке и считывает и выполняет команды из первого, который существует и доступен для чтения.

+0

См. Также https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html – tripleee

+0

@chrisahearn, если вы беспокоитесь только о том, чтобы настроить вещи для себя, вы можете поместить исходную ссылку на/etc/profile в вашем .bash_profile. Это скажет bash, чтобы загрузить оба профиля в память при запуске оболочки. –

+0

Проблема в том, что я запускаю 'sudo su', и я не знаю, как заставить запустить какой-то скрипт инициализации. –