Відповіді:
Це не називається bash_profile
, але стандартне місце для глобальної конфігурації bash /etc/bash.bashrc
. Зазвичай це називають, /etc/profile
якщо шкаралупа не забита. Наприклад, у /etc/profile
мене є:
if [ "$PS1" ]; then
if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1=’0
if [ ‐f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
fi
fi
Що стосується використання, /etc/profile
забезпечує загальносистемну конфігурацію для всіх сумісних оболонок Bourne (sh, bash, ksh тощо). Зазвичай, немає необхідності в еквіваленті /etc/bash_profile
, тому що цільовим файлом профілю є контроль поведінки для оболонок входу. Зазвичай все, що ви хочете там зробити, не буде специфічним для башти. /etc/bash.bashrc
є специфічним для bash і буде працювати як для оболонок для входу, так і для не входу в систему.
Щоб ще більше ускладнити речі, схоже, що в OS X навіть немає /etc/bash.bashrc
. Це, мабуть, пов’язано з тим, що термінали в OS X за замовчуванням працюють як оболонки для входу , тому відмінність втрачається:
Виняток із настанов вікна терміналів - це Terminal.app Mac OS X, який за замовчуванням виконує оболонку входу для кожного нового вікна терміналу, викликаючи .bash_profile замість .bashrc. Інші емулятори терміналів GUI можуть робити те саме, але більшість, як правило, не роблять цього.
Я не запускаю OS X, тому обсяг моїх знань закінчується на цьому.
/etc/profile
в Ubuntu 12.04. Що б ви замість цього запропонували, якби хотіли, щоб /etc/profile
виконувались тільки під bash, а жодна інша сумісна з ш-оболонкою?
/etc/profile
файли для моєї системи містить коментар у верхній частині , де йдеться: # System-wide .profile for sh(1)
. Чи означає це, що profile
є sh
специфічним? Чи sh
якось біжить раніше bash
?
sh
це підмножина bash
. /etc/profile
виконується для sh
, bash
та всіх інших сумісних з Борном снарядів.
/etc/bashrc
на mac, не /etc/bash.bashrc
. Це також, здається, працює /bin/sh
.
/etc/profile
є глобальним bash_profile
. Немає файлу, специфічного для bash, bash просто зчитує стандартний файл, прочитаний усіма оболонками у стилі Борна. Ось тут ви можете встановити змінні середовища для всієї системи.
Див. Чи є еквівалентний файл ".bashrc", який читають усі оболонки? для загального огляду загальних файлів запуску bash.
Це не завантажується /etc/profile
, тому нічого /etc/profile.d/
не завантажується (на відміну від оболонок для входу, див. Кінець).
Глобальним файлом для цього є / etc / bashrc або /etc/bash.bashrc (залежно від -DSYS_BASHRC=
прапора, встановленого під час компіляції):
# System-wide .bashrc file for interactive bash(1) shells.
if [ -z "$PS1" ]; then
return
fi
PS1='\h:\W \u\$ '
# Make bash check its window size after a process completes
shopt -s checkwinsize
[ -r "/etc/bashrc_$TERM_PROGRAM" ] && . "/etc/bashrc_$TERM_PROGRAM"
Зазвичай, корисно залишити цей файл таким, який є (наскільки це можливо), щоб уникнути конфліктів. Стратегія, яку я використовую, схожа на ту, яку використовують оболонки для входу (/ etc / profile).
Моя стратегія - додати завантажувач до вищевказаного файлу:
# Add new directory analog to /etc/profile.d
mkdir /etc/bashrc.d
# Write the loader to /etc/bash.bashrc (it might be /etc/bashrc on as mentioned above)
cat >> /etc/bash.bashrc << 'EOF'
# I appended this: Load scripts from /etc/bashrc.d
if test -d /etc/bashrc.d; then
for script in /etc/bashrc.d/*.sh; do
test -r "$script" && . "$script"
done
unset item
fi
EOF
Тепер я можу легко додати n налаштувань до глобального інтерактивного файлу оболонки, помістивши нові .shfiles у каталог /etc/bashrc.d.
/etc/bashrc.d/grep.sh
alias grep='grep --color=auto'
Ви можете зробити це за допомогою одного вкладиша:
printf "alias grep=\'grep --color=auto\'" > /etc/bashrc.d/grep.sh
Якщо, прочитавши це, ви не переконані, зробіть це, щоб переконати себе:
printf "alias grep=\'grep --color=auto\'" > /etc/profile.d/grep.sh
Відкрийте новий емулятор терміналу і знайдіть якесь загальне слово у своєму каталозі користувачів, наприклад, "the", використовуючи grep
grep -r 'the'
Нічого не повинно бути кольоровим. Зробіть те ж саме у віртуальній консолі, зробивши CTRLALTF1 (пам’ятайте, що ваш X-сервер, ймовірно, працює на CTRLALTF7, щоб ви могли переключитися назад. Якщо ви забудете, просто перезапустіть, наприклад, менеджер робочого столу)
grep -r 'the'
дасть кольорові результати за бажанням.
Нічого не повинно бути кольоровим. Зробіть те ж саме у віртуальній консолі, зробивши це CTRLALTF1(пам’ятайте, що ваш X-сервер, ймовірно, працює на CTRLALTF7тому, щоб ви могли переключитися назад. Якщо ви забудете, просто перезавантажте менеджер робочого столу, наприклад)
grep -r 'the'
дасть кольорові результати за бажанням.
Оболонка для входу - це те, що ви отримуєте при завантаженні машини або перемиканні віртуальних консолей за CTRLALTF1допомогою FNthвіртуальної консолі.
Оболонка входу завантажується /etc/profile
під час завантаження /etc/profile.d/*.sh
файлів.
/etc/bash.bashrc
з неінтерактивної оболонки./etc/profile
може читатися неінтерактивною оболонкою. Дивіться різницю між оболонкою для входу та оболонкою без входу?