6
A
回答
11
你不能。对当前目录的更改仅影响当前进程。
2
Ignacio是正确的。然而,作为一个十恶不赦的黑客(完全不明智的,这确实应该让我至少下降10票),你可以exec的一个新的shell时,即可大功告成
#!/bin/bash ... cd/ exec bash
5
让我详细说明这一点:
运行该脚本时,bash会为其创建一个新进程,并且对当前目录的更改只会影响该进程。
当您输入脚本时,脚本直接由您正在运行的shell执行,而不会创建额外的进程,因此当前目录的更改对主shell进程可见。
所以,伊格纳西奥指出,这不能做
0
1
如果你真的需要这种行为,可以使你的脚本返回的目录,然后用它在某种程度上。喜欢的东西:
#!/bin/bash
cd /tmp
echo $(pwd)
,然后你可以
cd $(./script.sh)
丑陋,但确实在这个简单的例子的伎俩。
+0
我同意 - 如果用户真的需要这个,并且不能通过.bashrc函数中的函数来实现,最接近的就是运行外部脚本,然后cd到任何返回的东西 - 这意味着外部脚本不能与用户有任何交互,因为你正在消耗所有的输出。这就是为什么William的答案似乎更加灵活一些。 mayEb stderr可以被使用 - 真的需要用户关于用例的更多细节 – nhed 2011-03-13 05:11:45
1
这是一个愚蠢的想法。使用PROMPT_COMMAND。例如:
$ export PROMPT_COMMAND='test -f $CDFILE && cd $(cat $CDFILE) && rm $CDFILE' $ export CDFILE=/tmp/cd.$$
然后,使你的脚本是“PWD> $ CDFILE”
相关问题
- 1. 如何从脚本结束后保留的bash脚本产生bash子shell
- 2. 在Bash脚本中更改目录
- 3. Bash脚本横切目录
- 4. bash脚本中的主目录导航
- 5. 脚本结束
- 6. 如何爬上bash脚本的父目录结构?
- 7. Bash脚本目录检测和创建
- 8. Bash脚本:重命名输出目录
- 9. Bash脚本Ping主机和目录
- 10. 结束Python脚本
- 11. 在bash shell脚本中检查目录的问题
- 12. Bash脚本:使用bash脚本中的“脚本”命令记录会话
- 13. Linux bash脚本复制目录和子目录
- 14. Bash脚本 - 在一个存档中压缩多个目录
- 15. 在Bash脚本中使用find命令并排除子目录
- 16. 在bash脚本中读取和制表目录名称
- 17. 在bash脚本中永久更改目录
- 18. bash脚本批量截取文件名在一个目录中
- 19. 如何在bash脚本中读取目录名
- 20. Bash脚本,结合系统中所有用户的目录大小
- 21. 不能从bash脚本中的rsync中排除目录
- 22. 从bash脚本中删除OS X中的目录
- 23. 在Linux bash脚本中的Perl脚本
- 24. Linux,Bash在产生进程结束后在脚本中执行命令
- 25. 如何避免“/ *”替代bash脚本根目录中的文件/目录?
- 26. 计算指定目录中的所有文件/目录 - bash/shell脚本
- 27. 并发登录bash脚本
- 28. 获取bash脚本文件所在的目录
- 29. 用于在目录之间复制文件的bash脚本
- 30. 通过其他目录中的bash脚本执行git命令
您的downvotes要求你赚的给予好评 – 2010-12-16 15:29:27
这将导致额外的shell中运行(您原来的最后一行)。奖励积分,如果你也可以解决这个问题。 – Sorpigal 2010-12-16 15:34:12
即使您现在必须键入退出两次以关闭终端窗口,我仍然喜欢这一个。一个改进:exec bash -l(以便您的命令提示符合理) – 2013-05-08 17:56:49