На основании комментария Хаука Лейджинга. Когда вы запускаете strace
на бинаре sshd
, он выводит отладочную информацию о том, как программа запускается и к каким файлам она пытается получить доступ. С помощью grep
мы можем перечислить файлы /etc/, к которым она пытается получить доступ.
$ sudo strace -e trace=file /usr/sbin/sshd |& grep '^open('|grep '/etc/'
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/etc/ssh/sshd_config", O_RDONLY|O_LARGEFILE) = 3
open("/etc/gai.conf", O_RDONLY) = 3
open("/etc/nsswitch.conf", O_RDONLY) = 3
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
open("/etc/ssh/ssh_host_rsa_key", O_RDONLY|O_LARGEFILE) = 3
open("/etc/ssh/blacklist.RSA-2048", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/etc/ssh/ssh_host_dsa_key", O_RDONLY|O_LARGEFILE) = 3
open("/etc/ssh/blacklist.DSA-1024", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/etc/ssh/ssh_host_ecdsa_key", O_RDONLY|O_LARGEFILE) = 3
open("/etc/ssh/blacklist.ECDSA-256", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
Из вышеприведенного строка
вывод /etc/ssh/sshd_config
используется в качестве конфигурации ssh
.
Вам нужно использовать eval
:
export var="/a/b/c"
for d in $(cat file.f)
do
eval echo "$d"
eval cd $d
pwd
done
или лучше, используя чтение:
export var="/a/b/c"
while read d
do
eval echo "$d"
eval cd "$d"
pwd
done < file.f
Вы можете использовать:
$ var="/home/durrantm/a/b/c"
$ cd $var
$ pwd
/home/durrantm/a/b/c