Unexpected command/filename substitution ( caused by alias?)


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Unexpected command/filename substitution ( caused by alias?)
# 1  
Old 02-27-2013
Unexpected command/filename substitution ( caused by alias?)

Hi:

there is a shell script, with the name "foo", located in a bin directory. in the same time, there is an alias "foo='/path/bin/foo' ", just for convenience.

in my home directory, there is a different script with name "foo" too. (a modified version.)

while in my home directory, when I do:

>$ cat foo

my local "foo" is displayed, as expected.

but if I do:
>$ source foo,

the common "/path/bin/foo" gets picked up, not my local one, as if the alias "foo" kicks in and substitutes the common "foo" for my local one.

to source my local "foo", I have to explicitly say:

>$ source ./foo

what I don't get is, the "foo" is the filename argument for both "cat" and "source" commands, but why the "foo" alias seemingly kicks in in "source" command, not the "cat" command.

Could any one shed some light on this?

Thanks.

NB Phil
# 2  
Old 02-28-2013
source is command to execute other shell commands, so if you say
source foo
it will try to run the command foo (alias in this case)
If foo is a script why are you using source command to run it....cant you just dot in?
. ./foo
This User Gave Thanks to grep_me For This Post:
# 3  
Old 02-28-2013
The cat utility is being asked to read a file; the source utility is being asked to execute a file. When you execute a file, lots of additional processing is invoked to find the file to be executed (alias searches, $PATH searches, ...) that is not done when you are just reading a file.
This User Gave Thanks to Don Cragun For This Post:
# 4  
Old 02-28-2013
Thanks for all your responses.

I just found this detail info, which confirms your explanation:

". (source or dot operator)

If filename does not contain a slash, the PATH variable is used to find filename. The current directory is searched if filename is not found in $PATH. "
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Alias command help

Hello, I'm attempting to configure shell settings in my new Macbook. The standard unix command line 'alias' doesn't seem to be working: bash-3.2$ alias dir ls -la bash: alias: dir: not found bash: alias: ls: not found bash: alias: -la: not found bash-3.2$ alias dir 'ls -la' bash:... (1 Reply)
Discussion started by: palex
1 Replies

2. UNIX for Dummies Questions & Answers

read command - using output from command substitution

Hey, guys! Trying to research this is such a pain since the read command itself is a common word. Try searching "unix OR linux read command examples" or using the command substitution keyword. :eek: So, I wanted to use a command statement similar to the following. This is kinda taken... (2 Replies)
Discussion started by: ProGrammar
2 Replies

3. UNIX for Dummies Questions & Answers

the meaning of "!:*" in "alias foo 'command\!:*' filename"

Hi: How can I remove my own post? Thanks. (2 Replies)
Discussion started by: phil518
2 Replies

4. UNIX for Dummies Questions & Answers

sed insert command and variable expansion/command substitution

I know this script is crummy, but I was just messing around.. how do I get sed's insert command to allow variable expansion to show the filename? #!/bin/bash filename=`echo $0` /usr/bin/sed '/#include/ { i\ the filename is `$filename` }' $1 exit 0 (8 Replies)
Discussion started by: glev2005
8 Replies

5. Shell Programming and Scripting

Substitution in a file dont work with an Array in filename

Hi. I´ve a script that should substitude the 8th line in a file called xxx.num6. The "xxx" is set by an array filled with this command: j=0 for Par in *.sys ; do Par=`echo $Par | sed 's/\(.*\).sys/\1/'` ; Par2="$Par" ; echo "${Par2}" j=$((j + 1)); done Now i try... (0 Replies)
Discussion started by: Lock3
0 Replies

6. UNIX for Dummies Questions & Answers

Parameter substitution with alias

Hello, in my .bashrc I tried to setup some aliases. alias scp_cmd="scp -P 8888 $1 me@somehost:." is supposed to copy a local file to somehost via scp. However it seems that the command line substitution does not work here. However this works: alias lst="ls -l $1" The above scp command can... (1 Reply)
Discussion started by: strobotta
1 Replies

7. UNIX for Advanced & Expert Users

Alias a command

Hi 'm executing a java program from my shell script on solaris 9 as $JAVA_HOME\bin\java -ms32m -mx128m -classpath $CLASSPATH com.abc.fwk,abcServer.abcfwkServer $1 & where $1 is port number when i do ps -ef, it shows whole command , i want to give this some alias name as abcProcess, so... (2 Replies)
Discussion started by: b_garima
2 Replies

8. Shell Programming and Scripting

syntax error near unexpected token...what caused?

Dear all, When I tried to run receive.sh,it returned following errors. syntax error near unexpected token `do #!/usr/bin/ksh GlobalValueReceive=r GlobalValueWorking=w GlobalValueTemp=t $exec 0<Property while read LineInProperty do if then $GlobalValueReceive =... (8 Replies)
Discussion started by: joshuaduan
8 Replies

9. UNIX for Dummies Questions & Answers

why emacs caused "command not found" error

I installed Red Hat Enterprise Linux 5 on my PC. When i typed 'emacs' on the console, "command not found" error occurrd. Why. :mad: (1 Reply)
Discussion started by: cy163
1 Replies

10. UNIX for Advanced & Expert Users

alias for rm command

Hi, i want to make alias for rm command. It should actually move the file to a directory in my home. Say if i type %rm abc.txt the command should expand to %mv abc.txt ~ashishp/trash How should I write the alias for this? -Ashish (8 Replies)
Discussion started by: shriashishpatil
8 Replies
Login or Register to Ask a Question