在tcsh脚本中执行别名

时间:2013-09-14 14:38:54

标签: linux shell tcsh

我编写了一个非常小的脚本,其中包含一个别名并执行它但它没有执行命令ts。任何人都可以请我提供修改此问题的意见。

#!/bin/tcsh
alias ts 'cd /path/goswami/;'
ts

2 个答案:

答案 0 :(得分:2)

你的脚本工作得很好。它会更改目录,但在执行脚本时您无法看到它。脚本执行完后,旧的工作目录将再次生效。

如果您想确保确实如此,那么您可以尝试以下方法:

#!/bin/tcsh
alias ts 'cd /path/goswami/; echo `pwd`'
ts

它将打印/path/goswami作为输出。

更新:但是,如果要更改脚本“外部”的目录,则根本不要使用该脚本。只需定义您的别名并使用而不是来调用您的脚本。

答案 1 :(得分:0)

我认为这个问题是关于执行脚本和采购脚本之间的区别。

如果您通过设置可执行权限然后通过它的完整或相对路径调用它来执行脚本,或者只是通过名称(如果它在PATH中),则会创建新的shell进程解释脚本(shell类型由脚本开头的晦涩的#!/ bin / xxx决定。)

如果您使用source关键字或来源脚本。语法,即其中一个:

source test.sh
. test.sh

...然后将在当前shell 中读取并执行该文件。

以下是使用源代码执行我能想到的脚本的一些含义:

  • 脚本完成“执行”后,脚本中设置的环境变量和其他shell变量仍然可用。
  • 如果从源脚本调用exit,它将终止调用脚本或shell。
  • 您不会添加启动新shell进程的开销。对于少数几个调用,这可能不会引起你的兴趣,但是当多次循环脚本时,开销会增加。

看起来您想要获取脚本而不是执行它。