Сообщение от оболочки начинается -sh
. Это дает два важного ключа к разгадке:
-
указывает, что это - оболочка входа в систему. Условно, программа входа в систему (программа, где Вы вводите свое имя пользователя и пароль, которое может быть login
, gdm, sshd, …), запускает оболочку с набора названия программы для начала с дополнительного -
. Таким образом, оболочка знает, что это - оболочка входа в систему и чтения ~/.profile
или другая сессия запускает файл.sh
. Таким образом, оболочка входа в систему пользователя установлена на /bin/sh
, а не колотить. Также /bin/sh
символьная ссылка состоит в том, чтобы колотить, или это - некоторая другая оболочка, такая как тире. Когда удар вызывается под именем sh
, это не читает свои конфигурационные файлы, только стандартные файлы (~/.profile
и /etc/profile
в оболочках входа в систему, ничем в оболочках невхода в систему), для совместимости. Так так или иначе ~/.bashrc
не читается.При явном вызове удара он будет читать .bashrc
. Необходимо будет передать -t
флаг к ssh
сказать этому открывать терминал даже при том, что Вы указали команду.
ssh -t testuser@nameofhost bash
Можно хотеть переключить оболочку входа в систему пользователя, чтобы быть ударом вместо /bin/sh
. Как testuser
, выполните команду
chsh -s /bin/bash
Измените путь к /usr/local/bin/bash
или везде, где удар расположен. Если Вы вызываете chsh
без аргументов Вы получите меню, показывающее, что окружает, Вам разрешают выбрать.
Результаты обоих должны быть одинаковыми, поскольку создается жесткая ссылка на исходный файл.
Разница заключается в предполагаемом использовании и, следовательно, в параметрах, доступных для каждой команды. Например, cp
может использовать рекурсию, тогда как ln
не может:
cp -lr <src> <target>
создаст жесткие ссылки в
для всех файлов в
. (он создает новые каталоги, а не ссылки). В результате древовидная структура каталогов в
будет выглядеть идентично структуре в
. Он будет отличаться от cp -r
тем, что при использовании последнего будет скопирован каждый файл и папка и каждому будет присвоен новый inode
, тогда как первый просто использует жесткие ссылки на файлов и поэтому просто увеличивает их количество ссылок
.
При копировании одного файла, как в вашем примере, результаты будут идентичными.
ссылка использует наименьшее количество системных вызовов, за ней следует ln и, наконец, cp :
$ strace link f.txt g.txt | wc --lines
282
$ strace ln --symbolic f.txt g.txt | wc --lines
311
$ strace ln f.txt g.txt | wc --lines
334
$ strace cp --symbolic f.txt g.txt | wc --lines
394
$ strace cp --link f.txt g.txt | wc --lines
410