如何在shell脚本中执行alias设置的变量?

如何在shell脚本中执行alias设置的变量?

cat ~/.bashrc  

alias src='cd $AOSHOME/src'

现在要写一个脚本,执行这个脚本时,要执行'src',也就是执行完脚本后,目录要进到$AOSHOME/src

请问脚本中如何实现?      
不懂你在说什么       
alias src='cd $AOSHOME/src'
执行src就相当执行cd $AOSHOME/src
直接输src      
cat ~/.bashrc           //cat bashrc 文件      明白?

alias src='cd $AOSHOME/src'           //bashrc 文件的内容      

定义完之后,就可以在命令行中直接输入src直接进入所定义的目录
但是,我现在要自己写一个脚本,脚本中要包含一条命令(src),但是我在脚本中直接写src,运行脚本后,根本不执行。所以,请教在脚本中怎么执行src。

现在要写一个脚本,执行这个脚本时,要执行'src',也就是执行完脚本后,目录要进到$AOSHOME/src

请问脚本中如何实现?      
执行 (这个执行不是指 source 命令) 一个脚本是不可能改变当前目录的, 目录的改变只是在脚本内部有效      
示例:
引用:
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=6972 $?=0] ; pwd
/Users/clark/tmp
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=6972 $?=0] ; cat chdir.sh
#!/bin/bash

cd /
pwd
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=6972 $?=0] ; ./chdir.sh
/
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=6972 $?=0] ; pwd
/Users/clark/tmp
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=6972 $?=0] ; bye
      
bash在非交互shell中, 默认不打开alias扩展
运行以下代码测试
复制内容到剪贴板
代码:
test.sh
#! /bin/bash

alias src='cd /tmp/'
shopt expand_aliases   
pwd
src
pwd

shopt -s  expand_aliases  
shopt expand_aliases   
pwd
src
pwd
      
哦!谢谢,如果我的目的是进入src设置的目录去拷贝文件呢(并不是想改变目录)?
用把alias设置的全路径写在脚本中吗?或有更简单的方法?      
引用:
原帖由 gyy_110 于 2008-2-20 17:50 发表
哦!谢谢,如果我的目的是进入src设置的目录去拷贝文件呢(并不是想改变目录)?
用把alias设置的全路径写在脚本中吗?或有更简单的方法?
前面 jiahuan 同志已经说的很清楚了, 在 script 中, alias 默认是 disable 的, 但是可以用 shopt -s expand_aliases 命令来 enable:
引用:
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=10614 $?=0] ; cat foo.sh
#!/bin/bash

alias myecho='echo'
myecho hello

shopt -s expand_aliases
myecho world
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=10614 $?=0] ; ./foo.sh
./foo.sh: line 4: myecho: command not found
world
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=10614 $?=0] ; bye
      
引用:
原帖由 gyy_110 于 2008-2-20 17:50 发表
哦!谢谢,如果我的目的是进入src设置的目录去拷贝文件呢(并不是想改变目录)?
用把alias设置的全路径写在脚本中吗?或有更简单的方法?
另外, alias 没有什么全路径之说