Программы по умолчанию

SLAX, Deep Style, ZenWalk

Модератор: Модераторы разделов

Аватара пользователя
sunny1983
Сообщения: 355
ОС: GNU/Linux 4.x (Fedora, Debian)

Программы по умолчанию

Сообщение sunny1983 »

Вопрос: в Slackware есть такое понятие как программы по умолчанию?
Например если установлены текстовые редакторы vim, elvis и emacs то какой будет запускаться командой editor?
Это умолчание можно установить вручную через "ln -s /usr/bin/vim /usr/bin/editor" или лучше не лазить руками в /usr и поступить другим способом?
Вот в man visudo, например, сказано что sudoers открывается редактором указаным в переменных VISUAL или EDITOR. У меня установлена переменная EDITOR=vim, но sudoers открывается в elvis.
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Программы по умолчанию

Сообщение drBatty »

sunny1983 писал(а):
19.11.2013 13:46
Вопрос: в Slackware есть такое понятие как программы по умолчанию?

aternatives из Debian? Нет. Не нужно.
sunny1983 писал(а):
19.11.2013 13:46
Например если установлены текстовые редакторы vim, elvis и emacs то какой будет запускаться командой editor?

$

editor bash: editor: команда не найдена



sunny1983 писал(а):
19.11.2013 13:46
Это умолчание можно установить вручную через "ln -s /usr/bin/vim /usr/bin/editor" или лучше не лазить руками в /usr и поступить другим способом?

если вам нужен vim, наберите vim.
sunny1983 писал(а):
19.11.2013 13:46
Вот в man visudo, например, сказано что sudoers открывается редактором указаным в переменных VISUAL или EDITOR. У меня установлена переменная EDITOR=vim, но sudoers открывается в elvis.

visudo это особый случай.
There is a hard-coded list of one or more editors that visudo will use set at compile-time
that may be overridden via the editor sudoers Default variable. This list defaults to
/usr/bin/vi. Normally, visudo does not honor the VISUAL or EDITOR environment variables
unless they contain an editor in the aforementioned editors list. However, if visudo is con-
figured with the --with-env-editor option or the env_editor Default variable is set in
sudoers, visudo will use any the editor defines by VISUAL or EDITOR. Note that this can be a
security hole since it allows the user to execute any program
they wish simply by setting
VISUAL or EDITOR.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

SergMarkov15
Сообщения: 117

Re: Программы по умолчанию

Сообщение SergMarkov15 »

drBatty писал(а):
19.11.2013 13:57
aternatives из Debian? Нет. Не нужно.

Да. Нужно .. :-)
cat /usr/bin/xdg-open

Код: Выделить всё

..
..
case "$DE" in
    kde)
    open_kde "$url"
    ;;

    gnome)
    open_gnome "$url"
    ;;

    xfce)
    open_xfce "$url"
    ;;

    lxde)
    open_lxde "$url"
    ;;

    generic)
    if (echo $url | grep '^magnet:?xt=urn:tree') then
    eiskaltdcpp "$url"
    elif (echo $url | grep '^magnet:?xt=urn:btih') then
    qbittorrent "$url"
    elif (echo $url | grep 'torrent$') then
    qbittorrent "$url"
    else
    open_generic "$url"
    fi
    ;;

    *)
    exit_failure_operation_impossible "no method available for opening '$url'"
    ;;
esac
..
..

Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Программы по умолчанию

Сообщение drBatty »

SergMarkov15 писал(а):
19.11.2013 15:23
Нужно .. :-)
cat /usr/bin/xdg-open

не надо путать солёное с цветным. Это часть спецификации http://standards.freedesktop.org/

ЗЫЖ конкретнее http://portland.freedesktop.org/xdg-utils-1.0/xdg-open.html
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
bormant
Сообщения: 1337

Re: Программы по умолчанию

Сообщение bormant »

Код: Выделить всё

$ wget -qO- http://slackware.osuosl.org/slackware-14.1/source/ap/sudo/sudo.SlackBuild | grep with-env-editor
  --with-env-editor \
Соответственно, обе две команды ниже запускают mcedit для редактирования sudoers:

Код: Выделить всё

# EDITOR=mcedit visudo
# VISUAL=mcedit visudo
А эти, как и ожидалось, vim:

Код: Выделить всё

# EDITOR=vim visudo
# VISUAL=vim visudo

Где установить переменные окружения EDITOR и/или VISUAL, решать вам.
Спасибо сказали:

Аватара пользователя
sunny1983
Сообщения: 355
ОС: GNU/Linux 4.x (Fedora, Debian)

Re: Программы по умолчанию

Сообщение sunny1983 »

То есть та сборка sudo, что по умолчанию идёт, не позволяет редактор менять? Надо sudo из слакбилда ставить?

Кстати у меня ещё и не получается подсветку синтаксиса в vim включить.
Спасибо сказали:

Аватара пользователя
bormant
Сообщения: 1337

Re: Программы по умолчанию

Сообщение bormant »

То есть всё совсем наоборот, что в переменные затолкнули, то и делает ея несекурность...
Рассказывайте, как отключали подсветку в vim, она там изначально есть и активирована, сколько себя помню...
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Программы по умолчанию

Сообщение drBatty »

sunny1983 писал(а):
19.11.2013 23:19
То есть та сборка sudo, что по умолчанию идёт, не позволяет редактор менять?

позволяет. Проверьте сами, только от рута нужно задать EDITOR. УМВР.
sunny1983 писал(а):
19.11.2013 23:19
Кстати у меня ещё и не получается подсветку синтаксиса в vim включить.

наберите команду

Код: Выделить всё

:set syntax?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
sunny1983
Сообщения: 355
ОС: GNU/Linux 4.x (Fedora, Debian)

Re: Программы по умолчанию

Сообщение sunny1983 »

bormant писал(а):
20.11.2013 01:23
Рассказывайте, как отключали подсветку в vim, она там изначально есть и активирована, сколько себя помню...

Не подсветка в vim, а вся консоль черно-белой стала, я целый день репу чесал пока это понял.
Всё из-за того что я прописал в /etc/profile:

Код: Выделить всё

VISUAL=/usr/bin/vim
EDITOR=/usr.bin/vim

if [ -z "$STY" ]; then
    exec screen -dR
fi

Вроде разобрался, что глупость сделал, потому как запуск screen нужно добавлять в сценарий входа ~/.bashrc. Но должен быть ещё глобальный сценарий входа в /etc, не обнаружив которого я записал это в /etc/profile.

А вот глобальные переменные присваивать кажется надо в профиле, или это ятоже неправильно сделал?
Спасибо сказали:

Аватара пользователя
bormant
Сообщения: 1337

Re: Программы по умолчанию

Сообщение bormant »

Глобальный сценарий настройки профилей -- /etc/profile, его править не стоит, ибо в нём в конце:

Код: Выделить всё

# Append any additional sh scripts found in /etc/profile.d/:
for profile_script in /etc/profile.d/*.sh ; do
  if [ -x $profile_script ]; then
    . $profile_script
  fi
done

Соответственно, общесистемные настройки профиля принято укладывать в /etc/profile.d/ в виде исполняемых сценариев *sh, а индивидуальные -- в профиль пользователя.

screen тоже вполне можно цветным сделать, это он только по умолчанию такой мрачный.
$ . /etc/profile
(что то же самое, что source /etc/profile) применит настройки профиля.
Или, для постоянного такого поведения, раскомментировать соответствующую строку в ~/.screenrc:

Код: Выделить всё

# make the shell in every window a login shell
#shell -$SHELL
Спасибо сказали:

Аватара пользователя
sunny1983
Сообщения: 355
ОС: GNU/Linux 4.x (Fedora, Debian)

Re: Программы по умолчанию

Сообщение sunny1983 »

bormant писал(а):
21.11.2013 15:20
Глобальный сценарий настройки профилей -- /etc/profile, его править не стоит
Соответственно, общесистемные настройки профиля принято укладывать в /etc/profile.d/ в виде исполняемых сценариев *sh, а индивидуальные -- в профиль пользователя.

Дошло наконец-то, что неправильного я сделал. Постоянно путаю, хотя и читал вроде, и говорили мне не раз. При логине пользователя сначала выполняется глобальный сценарий /etc/profile, затем локальный ~/.bash_profile, затем ~/.bash_login и, наконец, ~/.profile. Если я хочу, чтобы некоторые команды выполнялась выполнялись для всех пользователей - я должен изменить глобальный сценарий /etc/profile. Но поскольку в конце его стоит вызов сценариев из /etc/profile.d - я тем, что прописал запуск screen, перекрыл запуск этих сценариев - от этого и консоль вместе с vim черно-белой стала. А выполняются эти сценарии кстати в каком порядке, в алфавитном?
Спасибо сказали:

Аватара пользователя
bormant
Сообщения: 1337

Re: Программы по умолчанию

Сообщение bormant »

Да, в конечеом итоге -- в алфавитном.
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Программы по умолчанию

Сообщение drBatty »

sunny1983 писал(а):
24.11.2013 01:18
кстати в каком порядке, в алфавитном?

When bash is invoked as an interactive login shell, or as a non-interactive shell with the
--login option, it first reads and executes commands from the file /etc/profile, if that
file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and
~/.profile, in that order, and reads and executes commands from the first one that exists
and is readable. The --noprofile option may be used when the shell is started to inhibit
this behavior.

When a login shell exits, bash reads and executes commands from the file ~/.bash_logout, if
it exists.

When an interactive shell that is not a login shell is started, bash reads and executes com‐
mands from ~/.bashrc, if that file exists. This may be inhibited by using the --norc
option. The --rcfile file option will force bash to read and execute commands from file
instead of ~/.bashrc.

When bash is started non-interactively, to run a shell script, for example, it looks for the
variable BASH_ENV in the environment, expands its value if it appears there, and uses the
expanded value as the name of a file to read and execute. Bash behaves as if the following
command were executed:
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
but the value of the PATH variable is not used to search for the file name.

If bash is invoked with the name sh, it tries to mimic the startup behavior of historical
versions of sh as closely as possible, while conforming to the POSIX standard as well. When
invoked as an interactive login shell, or a non-interactive shell with the --login option,
it first attempts to read and execute commands from /etc/profile and ~/.profile, in that
order. The --noprofile option may be used to inhibit this behavior. When invoked as an
interactive shell with the name sh, bash looks for the variable ENV, expands its value if it
is defined, and uses the expanded value as the name of a file to read and execute. Since a
shell invoked as sh does not attempt to read and execute commands from any other startup
files, the --rcfile option has no effect. A non-interactive shell invoked with the name sh
does not attempt to read any other startup files. When invoked as sh, bash enters posix
mode after the startup files are read.

When bash is started in posix mode, as with the --posix command line option, it follows the
POSIX standard for startup files. In this mode, interactive shells expand the ENV variable
and commands are read and executed from the file whose name is the expanded value. No other
startup files are read.

Bash attempts to determine when it is being run with its standard input connected to a net‐
work connection, as when executed by the remote shell daemon, usually rshd, or the secure
shell daemon sshd. If bash determines it is being run in this fashion, it reads and exe‐
cutes commands from ~/.bashrc, if that file exists and is readable. It will not do this if
invoked as sh. The --norc option may be used to inhibit this behavior, and the --rcfile
option may be used to force another file to be read, but rshd does not generally invoke the
shell with those options or allow them to be specified.

If the shell is started with the effective user (group) id not equal to the real user
(group) id, and the -p option is not supplied, no startup files are read, shell functions
are not inherited from the environment, the SHELLOPTS, BASHOPTS, CDPATH, and GLOBIGNORE
variables, if they appear in the environment, are ignored, and the effective user id is set
to the real user id. If the -p option is supplied at invocation, the startup behavior is
the same, but the effective user id is not reset.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
sunny1983
Сообщения: 355
ОС: GNU/Linux 4.x (Fedora, Debian)

Re: Программы по умолчанию

Сообщение sunny1983 »

bormant писал(а):
21.11.2013 15:20
screen тоже вполне можно цветным сделать, это он только по умолчанию такой мрачный.
$ . /etc/profile
(что то же самое, что source /etc/profile) применит настройки профиля.
Или, для постоянного такого поведения, раскомментировать соответствующую строку в ~/.screenrc:

Код: Выделить всё

# make the shell in every window a login shell
#shell -$SHELL

Подразобрался немного. Мне удалось screen сделать цветным. Раскоментироал в ~/.screenrc строки

Код: Выделить всё

shell -$SHELL
altscreen on

И добавил такие же строки в глобальный /etc/screenrc
Но есть ещё один косяк. Когда я запускаю vi в screen, например "vi /etc/screenrc" у меня файл в редакторе открывается нормально. А когда "sudo vi /etc/screenrc" выводится только первая строка файла, затем он прокручивается при нажатом enter и в режим редактирования войти невозможно. Это опять что-то с переменными?
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Программы по умолчанию

Сообщение drBatty »

sunny1983 писал(а):
18.02.2014 16:08
А когда "sudo vi /etc/screenrc" выводится только первая строка файла, затем он прокручивается при нажатом enter и в режим редактирования войти невозможно. Это опять что-то с переменными?

угу. На этот раз уже с рутовыми. Попробуйте sudo -i.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
sunny1983
Сообщения: 355
ОС: GNU/Linux 4.x (Fedora, Debian)

Re: Программы по умолчанию

Сообщение sunny1983 »

drBatty писал(а):
22.02.2014 14:20
угу. На этот раз уже с рутовыми. Попробуйте sudo -i.

И что, sudo -i это значит при запуске новый логин произойдёт и /etc/profile будет выполнен, то есть вместо запуска vi запустится программа прописаная в конце /etc/profile.

Кстати в vim такой фигни нет, как в vi. Но что это было?
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Программы по умолчанию

Сообщение drBatty »

sunny1983 писал(а):
28.02.2014 01:02
И что, sudo -i это значит при запуске новый логин произойдёт и /etc/profile будет выполнен, то есть вместо запуска vi запустится программа прописаная в конце /etc/profile.

обычно в /etc/profile НЕ прописывают никаких команд, кроме настроечных, которые настраивают оболочку. Например у Патрика:
1. устанавливаем некоторые переменные типа HOSTNAME
2. устанавливаем PATH
3. устанавливаем вид подсказки
4. выполняем все /etc/profile.d/*.sh
5. добавляем в PATH точку
т.е. ни о какой "команде в конце" речи нет.
sunny1983 писал(а):
28.02.2014 01:02
Кстати в vim такой фигни нет, как в vi. Но что это было?


а что такое по вашему vi? У меня такой команды вообще нет.

Shell

$ ll $(which vi) lrwxrwxrwx 1 root root 3 сен 20 15:23 /usr/bin/vi -> vim*


и если я правильно путаю, vim запущенный как vi, работает так:
-v Режим Vi (как "vi")
-v Start Vim in Vi mode, just like the executable was called "vi". This only has
effect when the executable is called "ex".


http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
sunny1983
Сообщения: 355
ОС: GNU/Linux 4.x (Fedora, Debian)

Re: Программы по умолчанию

Сообщение sunny1983 »

drBatty писал(а):
28.02.2014 09:45
обычно в /etc/profile НЕ прописывают никаких команд, кроме настроечных, которые настраивают оболочку.

Ну если совсем точно, я прописал не в /etc/profile, а в /etc/profile.d/z-dot-in-non-root-path.sh

drBatty писал(а):
28.02.2014 09:45
т.е. ни о какой "команде в конце" речи нет.

А куда Патрик рекомендует прописывать автозапускаемую программу?

drBatty писал(а):
28.02.2014 09:45
а что такое по вашему vi?

Текстовый редактор elvis. Пакет elvis-2.2_0-x86_64-2.txz, входит в группу пакетов A.
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Программы по умолчанию

Сообщение drBatty »

sunny1983 писал(а):
28.02.2014 17:37
А куда Патрик рекомендует прописывать автозапускаемую программу?

Патрег рекомендует читать ман к тому, что у вас должно запускать автозапуск.

sunny1983 писал(а):
28.02.2014 17:37
Ну если совсем точно, я прописал не в /etc/profile, а в /etc/profile.d/z-dot-in-non-root-path.sh

довольно странное решение, но это ваше право.
sunny1983 писал(а):
28.02.2014 17:37
Текстовый редактор elvis. Пакет elvis-2.2_0-x86_64-2.txz, входит в группу пакетов A.

да, я знаю. У меня его нет, и я не вижу в нём никакого смысла.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

Аватара пользователя
sunny1983
Сообщения: 355
ОС: GNU/Linux 4.x (Fedora, Debian)

Re: Программы по умолчанию

Сообщение sunny1983 »

Ну как бы сказать. Желание проигнорировать рекомендацию возникло из-за того что файлы ~/.bash_profile, ~/.bash_login, ~/.profile - пользовательские, а /etc/profile - глобальный.
Впрочем, я сегодня придумал один способ (в других дистрибах подсмотрел аналог): Создаю файл /etc/skel/.bash_login и прописываю в нём:

Код: Выделить всё

if [ -x /etc/bash_login ]; then
   . /etc/bash_login
fi

Теперь у всех создаваемых пользователей будет глобальный сценарий автозапуска /etc/bash_login вкоторый и пропишу запуск screen и чего-нибудь ещё.
Так корректно?
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Программы по умолчанию

Сообщение drBatty »

sunny1983 писал(а):
01.03.2014 01:42
Ну как бы сказать. Желание проигнорировать рекомендацию возникло из-за того что файлы ~/.bash_profile, ~/.bash_login, ~/.profile - пользовательские, а /etc/profile - глобальный.

всё верно: вы логинитесь глобально, от nobody. А вот если bash запущен не глобально, то его поведение можно изменить тоже не глобально. Если вы желаете сделать ~/.bashrc для новых юзеров, запишите его в /etc/skel/.
sunny1983 писал(а):
01.03.2014 01:42
Так корректно?

да, работать будет, но я не понимаю смысла этого действия. Почему не сделать /etc/skel/.bash_login с нужными опциями? Что-бы менять настройки старых юзеров потом?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: