在脚本中运行cd并保留在该目录中 - 'source'命令没有帮助

时间:2010-12-17 19:51:03

标签: unix csh cd

尝试使用此处找到的答案:

How to run 'cd' in shell script and stay there after script finishes?

当我添加'source'命令时,无论我是执行'source'还是使用在cshrc中编码的别名调用脚本,目录在脚本运行后仍然保持不变。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

如下所示,请确保您对cd的呼叫在子shell中执行。如果是,这将无效source

子shell中带有cd的脚本

#!/bin/bash

( cd /etc ) # thie exec's in a subshell

输出

$ pwd
/home/siegex
$ source ./cdafterend.sh && pwd
/home/siegex

在子shell中<{1}} 而不是的脚本

cd

输出

#!/bin/bash

cd /etc # no subshell here

答案 1 :(得分:0)

必须从此脚本中的cd命令中删除“/ bin /”,以使命令按预期工作。删除此操作将删除此脚本的子shell问题。此外,在此上下文中,ls命令中的“$ 1”编码无效。