Question:
I have a simple script:
1 2 3 4 5 6 |
#!/bin/bash for server in $(~/.ansible/ansible_hosts) do ssh $server "hostname; readlink /opt/mydir/mylink;" done |
It works fine – the program returns the correct hostname and link – except that I get the following error on some but not all of the servers:
shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
All the directories exist. One of the most common suggestions has been to add a cd, a cd -, or a cd /. All that happens when that step is added is an additional:
chdir: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
I tried kickstarting the nfs daemon on the off chance that there was some confusion about my homedir and substituted /etc/init.d in case the problem was with /opt. No difference
This would simply be an annoyance except that when I try to use an ansible playbook instead of a simple ssh command it fails for that server.
Any insights would appreciated.
Answer:
I believe the error is not related to the script at all. The issue is: the directory at which you are when you try to run the script does not exist anymore. for example you have two terminals, cd somedir/
at the first one then mv somedir/ somewhere_else/
at the second one, then try to run whatsoever in the first terminal – you’ll receive this error message.
Please note you’ll get this error even if you re-create directory with the same name because the new directory will have different inode index.
At least this was in my case.