Как перейти с графики AMD на Intel без драйвера fglrx

Введение

Конфигурационные файлы Bash

У Bash есть куча файлов конфигурации (aka startup), он использует эти файлы для настройки конкретной среды для каждого пользователя.

Некоторые из этих файлов расположены в /etc, один из них, о котором я знаю, /etc/profile, является глобальным конфигурационным файлом, и его настройки будут применены ко всем сеансам, другой - /etc/bash.bashrc; Мы не должны обходиться этими файлами из-за того, что они уже защищены, и только root имеет права редактировать их.

Очень важный каталог, который может нам очень помочь: /etc/skel ; Всякий раз, когда вы создаете нового пользователя с домашним каталогом, файлы в этом каталоге будут использоваться в качестве скелета для домашнего каталога вашего нового пользователя.

ls -a /etc/skel

.bash_logout  .bashrc  .profile

Мы также можем использовать dpkg, чтобы найти об этих файлах:

$ dpkg -L bash | grep etc

/etc/skel/.bashrc
/etc/skel/.bash_logout
/etc/skel/.profile
/etc/bash.bashrc

, мы видим, что все они установлены bash.

Как работает bash

В любом из этих файлов может быть установлен псевдоним или функция, поэтому давайте посмотрим, как эти файлы будут использоваться bash.

From bash man page:

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

, поэтому порядок: ~/.bash_profile > ~/.bash_login > ~/.profile

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

Когда оболочка входа завершается, bash читает и выполняет команды из файла ~ / .bash_logout, если он существует.

Когда интерактивная оболочка, которая не является логином shell запускается, bash читает и выполняет команды из /etc/bash.bashrc и ~ / .bashrc, если эти файлы существуют.

этот будет запускаться каждый раз, когда мы выходим из оболочки входа, я не вижу, как это может повлиять на нашу ситуацию.

Начните следить за этими файлами

, поэтому наиболее важным является ~/.bashrc, потому что почти 90% оболочек bash, которые мы запускаем, находятся в интерактивном режиме и режим без входа. и если мы посмотрим на этот файл, мы увидим, что он будет искать другой файл с именем ~/.bash_aliases, если он сможет его найти, тогда он source тоже будет.

mv ~/.profile ~/.bash_profile

Прежде всего, мы должны переместить ~/.profile на ~/.bash_profile, в противном случае не имеет значения, защитим ли файл ~/.profile, кто-то может создать ~/.bash_profile, и он переопределит наши конфиги, так что:

touch ~/.bash_aliases

После этого, если вы не используете файл ~/.bash_aliases, затем создайте его, как и выше, кто-то может просто создать этот файл, и есть шанс, что он может изменить или псевдонимы внутри него. [!d22 ]

Наконец, используйте chattr для защиты этих файлов от редактирования и удаления.

Когда запущена интерактивная оболочка, которая не является оболочкой входа, bash читает и выполняет команды из / etc / bash.bashrc и ~ / .bashrc, если эти файлы существуют.

sudo chattr +i ~/.bash_profile ~/.bashrc ~/.bash_aliases

На странице chattr man:

Файл с атрибутом 'i' не может быть изменен: его нельзя удалить или переименовать, никакая ссылка не может быть создана для этого файла, и никакие данные не могут быть записаны в файл. Только суперпользователь или процесс, обладающий возможностями CAP_LINUX_IMMUTABLE, могут установить или очистить этот атрибут.

Мы закончили. Не забывайте, что всякий раз, когда вы хотите редактировать эти файлы, вы должны сначала удалить атрибут -i.

sudo touch /usr/local/bin/reload_aliases

Сбросить все без закрытия / повторного открытия терминала

unalias -a
alias x='...'
alias b='...'

Другим обходным решением является создание файла:

sudo chmod a=r,x /usr/local/bin/reload_aliases

Поместите свои псевдонимы туда:

/usr/local/bin/reload_aliases

Откат

Убедитесь, что никто не может записать в этот файл:

sudo chattr -i ~/.bash_profile ~/.bashrc ~/.bash_aliases
mv ~/.bash_profile ~/.profile
rm ~/.bash_aliases # if you don't use it
1
задан 9 February 2014 в 07:50

0 ответов

Другие вопросы по тегам:

Похожие вопросы: