2014-10-01 4 views
2

Мне нужно изменить приветствие пользователя, который входит в систему. Поэтому я изменил файл /etc/profile. В этом приветствии мне нужно знать, какую оболочку использует этот пользователь и рассказать пользователю. Проблема в том, что тогда я меняю свою оболочку на zsh или csh, она не работает. Даже если я просто набираю этот файл echo $SHELL, он ничего не делает. Как я думаю, когда я использую csh и zsh этот файл (/etc/profile) вообще не работает. Как я могу исправить эту проблему?изменение/etc/profile linux

Спасибо вам, извините за мой английский)

+0

Для 'zsh' edit'/etc/zsh/zprofile' или '/ etc/zsh/zshrc' –

+0

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

ответ

5

Вы должны начать с чтения страницу руководства каждой оболочки на вашей системе.

Существуют различные ароматы оболочек. Каждый вариант использует несколько разных (за сеанс и за оболочку, на сайт и на пользователя) файлы инициализации. Например:

  • shbash) используют /etc/profile и ~/.profile
  • bash также использует ~/.bash_profile, ~/.bashrc, ~/.bash_logout
  • csh использует /etc/.login и ~/.cshrc

и т.д ...

Вышеупомянутый список не является исчерпывающим. Чтобы проиллюстрировать, вам нужно будет проверить точное поведение каждой оболочки, которая используется в вашей системе, и настроить ее соответствующим образом.

Вам также необходимо рассмотреть вопрос о том, хотите ли вы изменить общесистемное поведение (соответствующее файлам инициализации под /etc) или поведение пользователя (соответствующее файлам инициализации в домашнем каталоге пользователя).

Для некоторых оболочек есть также сеанс (например, один раз для входа в систему) и настройки для каждой оболочки (например, для каждого окна терминала). Хорошим примером является ~/.bash_login (выполняется один раз для входа в систему) и ~/.bashrc (выполняется для каждой оболочки - например, оконечного окна).

+0

ok, ty, но есть какой-то способ понять с помощью оболочки этот пользователь использует и не изменять файлы для всех оболочек? – PepeHands

+1

убедитесь, что пользовательская оболочка по умолчанию находится в '/ etc/passwd' - это оболочка, которую пользователь получит при входе в систему (однако это не гарантирует, что пользователь не будет вызывать другую оболочку после входа в систему). – isedev

+0

это грустно, но спасибо за помощь) – PepeHands

2

Они оба выполняют различные файлы:

От Фро Zsh http://zsh.sourceforge.net/Guide/zshguide02.html

Теперь вот список файлов запуска и когда они выполняются. Вы будете видеть, что они делятся на два класса: те, которые находятся в каталоге/etc, которые находятся , отправляются туда системным администратором и запускаются для всех пользователей, а - те, что находятся в вашем домашнем каталоге, который zsh, как и многие оболочки, позволяет вы сократите до `~ '.

/etc/zshenv 
Always run for every zsh. 
~/.zshenv 
Usually run for every zsh (see below). 
/etc/zprofile 
Run for login shells. 
~/.zprofile 
Run for login shells. 
/etc/zshrc 
Run for interactive shells. 
~/.zshrc 
Run for interactive shells. 
/etc/zlogin 
Run for login shells. 
~/.zlogin 

для CSH http://unixhelp.ed.ac.uk/CGI/man-cgi?csh+1

Войти оболочки начинается с выполнения команд из системных файлов /etc/csh.cshrc и /etc/csh.login.

Вы можете сделать мягкую ссылку, чтобы указать на тот же файл:

ln -s /etc/profile /etc/zshenv 

ln -s /etc/profile /etc/csh.login 
+0

Значит ли это, что мне нужно изменять файлы для каждой оболочки, которую он может использовать? – PepeHands

+1

Нет, если вы используете мягкий ln 'ln -s', у вас может быть один файл (например,'/etc/profile') и различные ссылки на него. – Panciz

+0

спасибо, сэр, я понял) – PepeHands

0

Я изменил мой и т.д./файл профиля, чтобы начать сценарий питона при запуске. теперь моя программа запущена, но есть черный экран, потому что моя программа имеет в ней True loop, и теперь я не могу его остановить. Пожалуйста, скажите мне, как остановить программу, я попробовал ctrl + C, но ничего не произошло.

+0

Думаю, вам лучше задать отдельный вопрос. Надеюсь, вы получите быстрый и хорошо написанный аранжировщик (надеюсь). Я не уверен, что правильно понял вашу проблему, но я думаю, что не знаю ответа. – PepeHands

Смежные вопросы