shell-init:错误检索当前目录:getcwd - 通常的修复程序不工作

Tod*_*ner 19 linux ssh bash shell ansible

我有一个简单的脚本:

#!/bin/bash
for server in $(~/.ansible/ansible_hosts)
do
    ssh $server "hostname; readlink /opt/mydir/mylink;"
done
Run Code Online (Sandbox Code Playgroud)

它工作正常 - 程序返回正确的主机名和链接 - 除了我在一些但不是所有服务器上收到以下错误:

shell-init:检索当前目录时出错:getcwd:无法访问父目录:没有这样的文件或目录

所有目录都存在.最常见的建议之一是添加cd,cd - 或cd /.添加该步骤时发生的所有情况都是额外的:

chdir:检索当前目录时出错:getcwd:无法访问父目录:没有这样的文件或目录

我尝试启动nfs守护进程,因为我的homedir存在一些混乱,并且如果问题是/ opt,则替换/etc/init.d.没有不同

这只会是一个烦恼,除了当我尝试使用ansible playbook而不是简单的ssh命令时,它对于该服务器来说是失败的.

任何见解都会受到赞赏.

Med*_*dhi 82

在 Mac 上,只需终止并重新启动终端即可。它会做对的。

  • 终止并重新启动将导致您丢失当前的工作。这个方法对我有用。/sf/answers/4438913741/ (8认同)

Put*_*nik 47

我认为错误根本与脚本无关.问题是:当您尝试运行脚本时,您所在的目录不再存在.例如,您有两个终端,cd somedir/在第一个终端然后mv somedir/ somewhere_else/在第二个终端,然后尝试在第一个终端中运行 - 您将收到此错误消息.

至少这是我的情况.

  • 当您从已删除然后重新创建的文件夹运行命令但未刷新 shell 时,也会发生这种情况(在 Mac 上)。 (3认同)

cgl*_*cet 6

根据这个答案,当“你重新创建目录”但在这个位置已经有一个shell时会发生这种情况,所以我们可以简单地运行:

cd ~ && cd -
Run Code Online (Sandbox Code Playgroud)

  • `cd -` 返回到[上一个(“旧”)目录](/sf/ask/681820891/),例如,如果您运行 `cd x && cd y/z && cd -` 你最终会进入目录 `x`。 (3认同)

小智 5

在 mac 终端上打开一个新选项卡对我有用。