@460s

Обновление списка alias из shell скрипта. Как?

Добавляю с помощью shell скрипта алиас:
echo "alias sc='echo 21'" >> ~/.bashrc
После чего следует запустить сам сценарий bashrc, чтобы изменения вступили в силу до перезагрузки.
Если выполнить:
. ~/.bashrc
Ничего не произойдет, т.к. файлик просто включится в скрипт.
Собственно вопрос, как обновить список алиасов из скрипта?

alias alias_command_name='commands'
Не поможет, т.к. он будет работать только для текущей сессии.
  • Вопрос задан
  • 808 просмотров
Пригласить эксперта
Ответы на вопрос 2
urtow
@urtow
*nix, python, QA, bagpipe, folk music
Не надо использовать Alias в скриптах - alias - это просто сокращение. Для указанной задачи в bash надо использовать функции, про создание функций можно почитать вот тут - www.bash-scripting.ru/abs/chunks/ch23.html

Для указанного примера, добавляем в .bashrc вот такое:
function sc(){
	echo 21
}


Теперь эта функция доступна нам в скриптах:
#!/bin/bash
. ~/.bashrc
sc


Запустив этот скрипт мы получим вывод 21. Самое удобное, что в интерактивной сессии все будет работать точно так же - так как функция указана в bashrc после перезапуска интерактивной сессии мы сможем использовать функцию sc как любую команду bash интерпретатора
Ответ написан
Комментировать
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Если опустить вопрос "правильности", то нужно в начало скрипта ткнуть такое:
shopt -s expand_aliases

На самом деле алиасы иногда нужны, например вот для такого:
alias sqlite_exec="flock -w 60 /tmp/mon.lock /usr/bin/sqlite3 ${DATABASE}"

Функцией не добьёшься, чтобы можно было писать sqlite_exec ${query}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы