【发布时间】:2013-09-14 14:38:54
【问题描述】:
我编写了一个非常小的脚本,其中包含一个别名并执行它但它没有执行命令 ts。谁能提供我的意见来解决这个问题。
#!/bin/tcsh
alias ts 'cd /path/goswami/;'
ts
【问题讨论】:
-
你为什么认为它没有执行?
-
更新问题,执行命令。正在执行脚本
我编写了一个非常小的脚本,其中包含一个别名并执行它但它没有执行命令 ts。谁能提供我的意见来解决这个问题。
#!/bin/tcsh
alias ts 'cd /path/goswami/;'
ts
【问题讨论】:
您的脚本运行良好。它会更改目录,但在执行脚本时您看不到它。脚本执行后,旧的工作目录将再次生效。
如果您想确保确实如此,那么您可以尝试以下方法:
#!/bin/tcsh
alias ts 'cd /path/goswami/; echo `pwd`'
ts
它将打印/path/goswami 作为输出。
更新:但是,如果您想在脚本“外部”更改目录,则根本不要使用该脚本。只需定义您的别名并使用它而不是调用您的脚本。
【讨论】:
我认为这个问题是关于执行脚本和采购脚本之间的区别。
如果您通过设置可执行权限来执行脚本,然后通过它的完整路径或相对路径调用它,或者如果它在您的 PATH 中则仅通过名称调用它,那么将创建 一个新的 shell 进程解释脚本(shell 类型由脚本开头的晦涩#!/bin/xxx 决定)。
如果您使用 source 关键字或 .语法,即以下之一:
source test.sh
. test.sh
...然后文件将在当前shell中被读取和执行。
以下是我能想到的使用源代码而不是执行脚本的一些含义:
您似乎想要获取脚本而不是执行它。
【讨论】: