[решено] Не устанавливается alias в bash-скрипте (Что я делаю не так?)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Ответить
Аватара пользователя
Иван Шихалев
Сообщения: 167
Статус: принципиальный дилетант
ОС: Gentoo Linux
Контактная информация:

[решено] Не устанавливается alias в bash-скрипте

Сообщение Иван Шихалев »

Пишу следующий скриптик:

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

#!/bin/bash

alias $1
shift 1
$@

Затем запускаю (скрипт сохранен как исполняемый с именем «v» и в каталоге, входящем в $PATH):

bash

$ v x=ls x /home/iws/usr/bin/v: line 5: x: команда не найдена


При том, что если просто использовать alias в командной строке — все ок:

bash

$ alias x=ls $ x opt tmp usr var wrk


Алиас в принципе в скрипте не работает? Или что?
ЗЫ. При этом он устанавливается, см:

bash

$ v x=ls alias alias x='ls'

Иван Шихалев
shikhalev.org
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: [решено] Не устанавливается alias в bash-скрипте

Сообщение SLEDopit »

Чтобы заработало так, как вы хотите, нужно
1. Включить интерактивный режим оболочки
2. Добавить eval перед $@
примерно так:

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

#!/bin/bash -i

alias $1
shift 1
eval $@
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
Иван Шихалев
Сообщения: 167
Статус: принципиальный дилетант
ОС: Gentoo Linux
Контактная информация:

Re: [решено] Не устанавливается alias в bash-скрипте

Сообщение Иван Шихалев »

SLEDopit, спасибо!
Иван Шихалев
shikhalev.org
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: [решено] Не устанавливается alias в bash-скрипте

Сообщение drBatty »

Иван Шихалев писал(а):
25.10.2013 18:43
Алиас в принципе в скрипте не работает?

да.

SLEDopit писал(а):
25.10.2013 18:54
Включить интерактивный режим оболочки

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

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Иван Шихалев
Сообщения: 167
Статус: принципиальный дилетант
ОС: Gentoo Linux
Контактная информация:

Re: [решено] Не устанавливается alias в bash-скрипте

Сообщение Иван Шихалев »

А

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

shopt -s expand_aliases

тоже превращает скрипт в не скрипт?
Иван Шихалев
shikhalev.org
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: [решено] Не устанавливается alias в bash-скрипте

Сообщение drBatty »

Иван Шихалев
а можете мне объяснить смысл алиасов в скрипте? А то он от меня ускользает...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

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