В чем разница между этими командами: я использовал cd $HOME/directory/test/ перед запуском каждой строки:
cd ~
cd /
cd ~/
cd -
cd --
cd /.
cd $HOME
cd $USR
cd
И все они выполняют одно и то же поведение. В чем разница?
cd ~
Изменения в вашем домашнем каталоге. ~ в начале пути является аббревиатурой, означающей «домашний каталог пользователя».
cd /
Изменяет корневой каталог /. Здесь нет ничего особенного.
cd ~/
Конечная / не имеет никакого значения. Он заставляет ~ интерпретироваться как каталог, но cd делает это в любом случае. (Конечная / имеет значение для символической ссылки на каталог - сравните ls -ld /var/spool/mail и ls -ld /var/spool/mail/.)
cd -
Изменения в каталоге, в котором вы были до предыдущего . Это особый случай команды cd: когда его аргумент -, он делает это.
cd --
С большинством команд, включая cd, аргумент -- означает, что все, что приходит после этого, будет рассматриваться как операнд, а не вариант. Так, например, cd -- -P означает изменение в каталог с именем -P, тогда как cd -P передает параметр -P (что имеет значение, если путь, по которому вы переходите, проходит через символическую ссылку). Если после -- нет аргументов, -- ничего не делает; эта команда эквивалентна простой cd. cd без аргумента, в свою очередь, является ярлыком для cd ~.
cd /.
Эквивалентен cd /, поскольку /. - это тот же каталог, что и / (. в основном полезен сам по себе, означает «текущий каталог»).
cd $HOME
Изменения в вашем домашнем каталоге. Это не удается, если путь к вашему домашнему каталогу содержит пробел или другие символы. Всегда используйте двойные кавычки вокруг переменных подстановок: cd "$HOME".
cd $USR
По всей вероятности, это ничего не значит, потому что в вашей оболочке не определена переменная с именем USR, поэтому выполняемая команда просто [ f37].