LinuxForum.Fans
Тема

rc.local и alias

Автор: Armoyt 8 сообщений 2786 просмотров
#272896

Приветствую обитателей.
Пытаюсь понять как в стабильном дебиане работает rc.local и столкнулся с аномалией. Файл работает и выполняется (например он мне выключает светодиоды вайфая и блютуса без вопросов, монтирует внешний hd), но команда alias из него не исполняется.

rc.local
alias apt.un="fuser -vki /var/lib/dpkg/lock"
alias mount.iso="mount -t iso9660 -o loop"
alias mount.nrg="mount -o loop,offset=307200"
hdparm -S 255 -B 255 -M 254 /dev/sda
echo 1 > /proc/sys/kernel/sysrq
echo "0" > /sys/devices/platform/asus_laptop/wlan
echo "0" > /sys/devices/platform/asus_laptop/bluetooth
mount /media/freeagent
exit 0

ЧЯДНТ?
По ряду причин это было удобнее, чем использования башевского конфига для алиасов.

#272897
"Armoyt" написал:
По ряду причин это было удобнее, чем использования башевского конфига для алиасов.

А почему тогда не в /etc/profile или /etc/bash/bashrc?

#272899
"Armoyt" написал:
но команда alias из него не исполняется

Наверное, из-за того, что...

"man alias" написал:
An alias definition shall affect the current shell execution environment and the execution environments of the subshells of the
current shell. When used as specified by this volume of IEEE Std 1003.1-2001, the alias definition shall not affect the parent
process of the current shell nor any utility environment invoked by the shell
#272913

Я немного не рублю в башевских файлах конфига, к тому же всегда приятно, когда все настройки (во всяком случае свои, "противоестественные" настройки) прописаны в одном файле.

"Lupo Alberto" написал:
А почему тогда не в /etc/profile

Если я сюда присобачу alias оно заработает при старте? Хотелось бы, чтобы алиасы вступали в силу для всех пользователей, а не только для моего юзера или суперюзера. Насколько я помню баш подгружает только один файл настройки (того пользователя, под которым логинишься), а при переключении на суперюзера выдаёт шиш.

#272917
"Armoyt" написал:
Насколько я помню баш подгружает только один файл настройки (того пользователя, под которым логинишься), а при переключении на суперюзера выдаёт шиш.

Настройки оболочки применяются последовательно, начиная с общесистемных в /etc/bash/bashrc и заканчивая пользовательскими. Поместите алиасы в /etc/bash/bashrc, если хотите, чтобы они работали для всех пользователей, включая root.

#272921
"Lupo Alberto" написал:
Поместите алиасы в /etc/bash/bashrc, если хотите, чтобы они работали для всех пользователей, включая root.

Хотя это, возможно, зависит от конкретной реализации в дистрибутиве. Я сужу по Gentoo.

"Armoyt" написал:
к тому же всегда приятно, когда все настройки (во всяком случае свои, "противоестественные" настройки) прописаны в одном файле.

Опять же, сужу по Gentoo, такие настройки, которые применятся ко всем пользовательским аккаунтам, но создаются администратором, можно создать самостоятельно и поместить в каталог /etc/profile.d/.
Гляньте на эту тему, а если сложно, покажите файл /etc/profile.

#272922

Ещё — настройки оболочки для вновь создаваемых аккаунтов можно прописать в /etc/skel/.bashrc.

#273007

Мда. Дебиан отжог. Оказывается главный файл баша называется /etc/bash.bashrc (масло масленное). После помещения в его конец алиасов, они работают для всех юзверей. У меня это выглядит так:

Показать
# System-wide .bashrc file for interactive bash(1) shells.

# To enable the settings / commands in this file for login shells as well,
# this file has to be sourced in /etc/profile.

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, overwrite the one in /etc/profile)
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

# Commented out, don't overwrite xterm -T "title" -n "icontitle" by default.
# If this is an xterm set the title to user@host:dir
#case "$TERM" in
#xterm*|rxvt*)
# PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
# ;;
#*)
# ;;
#esac

# enable bash completion in interactive shells
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
# . /etc/bash_completion
#fi

# if the command-not-found package is installed, use it
if [ -x /usr/lib/command-not-found -o -x /usr/share/command-not-found ]; then
function command_not_found_handle {
# check because c-n-f could've been removed in the meantime
if [ -x /usr/lib/command-not-found ]; then
/usr/bin/python /usr/lib/command-not-found -- $1
return $?
elif [ -x /usr/share/command-not-found ]; then
/usr/bin/python /usr/share/command-not-found -- $1
return $?
else
return 127
fi
}
fi


alias apt.un="fuser -vki /var/lib/dpkg/lock"
alias mount.iso="mount -t iso9660 -o loop"
alias mount.nrg="mount -o loop,offset=307200"

Спасибо за наводку и жаль, что нельзя запихнуть это всё в rc.local.

Войдите или зарегистрируйтесь, чтобы ответить.