[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] Using aliases or functions in bash script



Am 2008-01-26 16:48:18, schrieb T o n g:
> Here is the full OP -- let me try for the last time:

???

> An advanced bash alias expansion question -- 
> How can I use my aliases or functions in my bash script?
> 
> I have the following alias and function defined in my ~/.bashrc:
> 
>   $ alias rd
>   alias rd='rmdir'
> 
>   $ type dt
>   dt is a function
>   dt () 
>   { 
>       pushd +$1
>   }
> 
> How can I use them in my script?


    dt here are spome parameters


    rd ${HOME}


> 
> Looking through the man pages, I think the following content is related 
> to my question:
> 
>        Aliases  are not expanded when the shell is not interactive, unless the
>        expand_aliases shell option is set using shopt.
> 
>        [-+]O [shopt_option]
>                  shopt_option  is  one  of  the  shell options accepted by the
>                  shopt  builtin  (see  SHELL  BUILTIN  COMMANDS  below).    If
>                  shopt_option is present, -O sets the value of that option; +O
>                  unsets it.  If shopt_option is not supplied,  the  names  and
>                  values  of the shell options accepted by shopt are printed on
>                  the standard output.  If the invocation  option  is  +O,  the
>                  output  is displayed in a format that may be reused as input.
> 
>               expand_aliases
>                       If set, aliases are expanded as  described  above  under
>                       ALIASES.  This option is enabled by default for interac-
>                       tive shells.
> 
> And this is what I've tried: 
> 
>   $ bash -c 'shopt -s expand_aliases; alias rd'
>   bash: line 0: alias: rd: not found


----[ '~/.bashrc' ]-------------

    shopt -s expand_aliases
    alias rd=rmdir

    dt() 
    { 
        pushd +$1
    }

--------------------------------


> Am I hitting a new bug or I'm doing something wrong? Please comment,
> otherwise I'm going to file a bug report.

shopt must be executed before ANY other commands in ~/.bash_login or
~/.bashrc and the function should be in ~/.bashrc since it is read
by non-login-shells

Note:  I do this successfuly since years...

Thanks, Greetings and nice Day
    Michelle Konzack
    Systemadministrator
    Tamay Dogan Network
    Debian GNU/Linux Consultant


-- 
Linux-User #280138 with the Linux Counter, http://counter.li.org/
##################### Debian GNU/Linux Consultant #####################
Michelle Konzack   Apt. 917                  ICQ #328449886
                   50, rue de Soultz         MSN LinuxMichi
0033/6/61925193    67100 Strasbourg/France   IRC #Debian (irc.icq.com)

Attachment: signature.pgp
Description: Digital signature


Reply to: