Thread: [Linuxcommand-discuss] aliases in scripts
Brought to you by:
bshotts
From: Mertens B. <bra...@li...> - 2002-08-06 20:38:48
|
Hi, I added some aliases to my ~/.bashrc file like alias lh='ls -lh' and restarted my konsole to activate the changes (which works fine) but now I tried to call that alias from a script and I get: /home/M8ram/bin/bu: lh: command not found Is this because shell scripts are executed in a non-interactive shell? Is it possible to use aliases in scripts? (Without defining them in the script? I know I'm being really lazy! :))) Thanks -- | Mertens Bram "M8ram" <bra...@li...> | Registered [Red Hat] Linux User # 249103 since Octobre 2000 | http://linux.be | http://www.redhat.com | http://counter.li.org \____________________________ |
From: William S. <bs...@pa...> - 2002-08-06 20:59:42
|
That is a really interesting question. I have noticed on my RH box that scripts do inherit the aliases of the user. I saw where this was controlled once, but I can't remember where. I would perfer the behavior you describe since it would make the execution environment more predictable/secure. Perhaps one of our more enlightened members will know the answer. ||||| William Shotts, Jr. (bshotts AT panix DOT com) ||||| Be a Linux Commander! Follow me to http://linuxcommand.org On 6 Aug 2002, Mertens Bram wrote: > Hi, > > I added some aliases to my ~/.bashrc file like > alias lh='ls -lh' > and restarted my konsole to activate the changes (which works fine) but > now I tried to call that alias from a script and I get: > /home/M8ram/bin/bu: lh: command not found > > Is this because shell scripts are executed in a non-interactive shell? > > Is it possible to use aliases in scripts? (Without defining them in the > script? > > I know I'm being really lazy! :))) > > Thanks > -- > | Mertens Bram "M8ram" <bra...@li...> > | Registered [Red Hat] Linux User # 249103 since Octobre 2000 > | http://linux.be | http://www.redhat.com | http://counter.li.org > \____________________________ > > > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > Linuxcommand-discuss mailing list > Lin...@li... > https://lists.sourceforge.net/lists/listinfo/linuxcommand-discuss > |
From: William S. <wes...@co...> - 2002-08-07 00:32:26
|
On Tuesday 06 August 2002 04:59 pm, William Shotts wrote: > That is a really interesting question. I have noticed on my RH box that > scripts do inherit the aliases of the user. I saw where this was > controlled once, but I can't remember where. I would perfer the > behavior you describe since it would make the execution environment > more predictable/secure. Perhaps one of our more enlightened members will > know the answer. > > ||||| William Shotts, Jr. (bshotts AT panix DOT com) > ||||| Be a Linux Commander! Follow me to http://linuxcommand.org > > On 6 Aug 2002, Mertens Bram wrote: > > Hi, > > > > I added some aliases to my ~/.bashrc file like > > alias lh='ls -lh' > > and restarted my konsole to activate the changes (which works fine) but > > now I tried to call that alias from a script and I get: > > /home/M8ram/bin/bu: lh: command not found > > > > Is this because shell scripts are executed in a non-interactive shell? > > > > Is it possible to use aliases in scripts? (Without defining them in the > > script? > > > > I know I'm being really lazy! :))) > > > > Thanks > > -- > > > > | Mertens Bram "M8ram" <bra...@li...> > > | Registered [Red Hat] Linux User # 249103 since Octobre 2000 > > | http://linux.be | http://www.redhat.com | http://counter.li.org > > > > \____________________________ > > Jeez! What was I thinking? You can easily do what you want by including the following line near the beginning of your script: . ~/.bashrc The leading dot and space are important. They are shorthand for the source command. Source reads a file and includes it in your script. It is useful for including libraries of common functions, constants, etc. This will work your scripts but probably would not be useful for scripts shared by other users. To solve this problem, you should look at /etc/bashrc and /etc/profile files which provide the common environment for all users. -- ||||| William Shotts, Jr. (bshotts AT panix DOT com) ||||| Be a Linux Commander! Follow me to http://linuxcommand.org |
From: Norman B. R. <rob...@ze...> - 2002-08-07 00:47:16
|
Of course all shells are different - else you wouldn't have so damn many! That said: Directly executing a script opens a new shell and each command in that script is only within that shell. When the script exits, so does that seperate shell process. 1. From the current shell, have an executable script "somescript". Type "somescript". You can do this yourself and call the shell process you want it to run in, and pass default shell parameters. 2. From the current shell, have an executable script "somescript". Type "bash somescript". You can also run your script with the 'x' option to test things out; "bash -x testscript" and watch the script execute! You can also execute a script within the context of the current shell, and have that script interact with the shell. 3. From the current shell, have an executable script "somescript". Type "source testscript". Also of interest: If you read the BASH manpage, it indicates the --norc option (which is on by default if the shell is invoked as 'sh') ~/.bashrc will not be read or executed. You can also read about the option --noprofile. This would cause the shell not to read the /etc/profile, ~/.bash_profile, ~/.bash_login, or ~/.profile. Notice you don't see ~/.bashrc in the --noprofile option <is this a hint?> Hope this gives you something to think about, Norman. William Shotts wrote: >That is a really interesting question. I have noticed on my RH box that >scripts do inherit the aliases of the user. I saw where this was >controlled once, but I can't remember where. I would perfer the >behavior you describe since it would make the execution environment >more predictable/secure. Perhaps one of our more enlightened members will >know the answer. > >||||| William Shotts, Jr. (bshotts AT panix DOT com) >||||| Be a Linux Commander! Follow me to http://linuxcommand.org > >On 6 Aug 2002, Mertens Bram wrote: > > > >>Hi, >> >>I added some aliases to my ~/.bashrc file like >>alias lh='ls -lh' >>and restarted my konsole to activate the changes (which works fine) but >>now I tried to call that alias from a script and I get: >>/home/M8ram/bin/bu: lh: command not found >> >>Is this because shell scripts are executed in a non-interactive shell? >> >>Is it possible to use aliases in scripts? (Without defining them in the >>script? >> >>I know I'm being really lazy! :))) >> >>Thanks >>-- >>| Mertens Bram "M8ram" <bra...@li...> >>| Registered [Red Hat] Linux User # 249103 since Octobre 2000 >>| http://linux.be | http://www.redhat.com | http://counter.li.org >> \____________________________ >> >> >> >> >>------------------------------------------------------- >>This sf.net email is sponsored by:ThinkGeek >>Welcome to geek heaven. >>http://thinkgeek.com/sf >>_______________________________________________ >>Linuxcommand-discuss mailing list >>Lin...@li... >>https://lists.sourceforge.net/lists/listinfo/linuxcommand-discuss >> >> >> > > > >------------------------------------------------------- >This sf.net email is sponsored by:ThinkGeek >Welcome to geek heaven. >http://thinkgeek.com/sf >_______________________________________________ >Linuxcommand-discuss mailing list >Lin...@li... >https://lists.sourceforge.net/lists/listinfo/linuxcommand-discuss > > > |