псевдоним в скрипте - PullRequest
       5

псевдоним в скрипте

2 голосов
/ 06 августа 2010

В Linux, если я помещаю команду в скрипт, содержащий псевдоним, я вижу, что он не раскрывается.Как я могу это исправить?Я использую Bash.

Ответы [ 3 ]

4 голосов
/ 06 августа 2010

Согласно странице TLDP о псевдонимах , вам нужно использовать строку shopt -s expand_aliases в своем коде для расширения псевдонимов. В приведенном ниже примере был получен ожидаемый результат, но без отображаемой строки он просто напечатал «my_ls: команда не найдена»:

#!/bin/bash

shopt -s expand_aliases
alias my_ls='ls -lrt'
echo "Trying my_ls"
my_ls
exit
1 голос
/ 06 августа 2010

Если вы хотите, чтобы ваши псевдонимы оболочки были доступны в скрипте, вы должны включить их вручную.Если они определены в ~/.bashrc, поместите строку

. ~/.bashrc

после строки #!/bin/sh в вашем скрипте.Это выполнит содержимое .bashrc в контексте вашего скрипта.

0 голосов
/ 06 августа 2010

Включение режима posix (например, путем вызова bash как sh или с помощью команды (set -o posix) 2>/dev/null && set -o posix должно помочь.

Даже в этом случае имейте в виду, что псевдонимы расширяются при разборе, а порядок между анализом и выполнением плохо определен. Например

alias foo=echo; foo bar

или

{
    alias foo=echo
    foo bar
}

попытается запустить foo, поскольку псевдоним еще не определен во время разбора. Кроме того, некоторые оболочки анализируют весь ввод eval или . (источника) перед выполнением любого из них.

Таким образом, единственный переносимый и надежный способ использовать псевдонимы в сценариях - это определить их, а затем eval или . код, который их использует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...