Работа с alias через скрипт

Раньше не сталкивался с такой бедой. Пишу alias просто в консоли и получаю информацию об alias(ах). Если запускаю через скрипт (т.е. просто в текстовом документе пишу alias и запускаю на выполнение) - ничего не выдает. С другими командами нет проблем, а alias ну никак не хочет через скрипт отрабатывать. Подскажите как быть... (Надо в скрипте проверить есть ли alias для одной команды. Если есть - отменить его, а в конце скрипта применить обратно. Я то всё уже написал. Но выяснилось, что не хочет отрабатывать alias никак....) Что там за особенности?
  • Вопрос задан
  • 2882 просмотра
Решения вопроса 2
@xandox
Он не показывает тебе аласы потому, что по умолчанию shell для выполнения скрипта неподгружает rc файлы
Сделай перед вызовом alias
. $HOME/.bashrc #или .zshrc если его используешь и все у тебя будет
➜  ~  alias
-='cd -'
..='cd ..'
...='cd ../..'
1='cd -'
2='cd -2'
3='cd -3'
4='cd -4'
5='cd -5'
6='cd -6'
7='cd -7'
8='cd -8'
9='cd -9'

➜  ~  cat test.sh
#!/usr/bin/env zsh

. $HOME/.zshrc

Al=$(alias)
echo $Al

➜  ~  ./test.sh
-='cd -'
..='cd ..'
...='cd ../..'
1='cd -'
2='cd -2'
3='cd -3'
4='cd -4'
5='cd -5'
6='cd -6'
7='cd -7'
8='cd -8'
9='cd -9'
Ответ написан
merryjane
@merryjane
Системный администратор
В bash можно так:
запустить через bash -i и прописать shopt -s expand_aliases. Тогда не надо делать . $HOME/.bashrc.
То-есть в скрипте это будет выглядеть так:
#!/bin/bash -i
shopt -s expand_aliases
alias
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@sonik_spb
alias для каждого юзера вроде как свой. Может скрипт работает не от нужного юзера?
Ответ написан
Ваш ответ на вопрос

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

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