Для чего используется команда pwd в Linux
Что проверяют
Базовое владение терминалом, без которого тестировщику на стенде тяжело: смотреть логи, запускать скрипты, разбираться с путями. Вопрос простой, поэтому следом обычно идёт уточнение про относительные пути или про то, почему автотест не находит файл.
Как отвечать
pwd (print working directory) выводит абсолютный путь текущего рабочего каталога, например /home/tester/project. Тот же путь хранится в переменной $PWD, предыдущий каталог в $OLDPWD, туда возвращает cd -.
Стоит знать два ключа:
-L: логический путь, как вы в него пришли, с символическими ссылками. Так по умолчанию работает встроенная команда bash;-P: физический путь с раскрытыми ссылками. Отдельная утилита/bin/pwdиз GNU coreutils по умолчанию ведёт себя именно так, поэтому в каталоге через симлинк две команды могут показать разное.
Где это нужно в тестировании:
- на стенде: перед
rm,cpили правкой конфига убедиться, что вы там, где думаете, особенно на общем сервере; - в автотестах: относительные пути считаются от рабочего каталога процесса, а не от файла со скриптом. Отсюда тест, который проходит из IDE и падает в CI. В Python текущий каталог даёт
os.getcwd(), в JavaSystem.getProperty("user.dir"); - в shell-скриптах: надёжнее перейти в каталог скрипта через
cd "$(dirname "$0")", чем полагаться на то, откуда его запустили; - в CI и Docker: рабочий каталог задаёт раннер или
WORKDIRв Dockerfile, иpwdв логе джобы сразу показывает, где на самом деле выполняется шаг.
Где спотыкаются
Путают pwd с passwd, командой смены пароля. Звучит смешно, но на собеседованиях случается.
Отвечают одной фразой «показывает текущую папку» и не могут связать это с реальной проблемой: почему тест не видит testdata/users.csv, хотя файл лежит рядом.
Не знают про симлинки. Когда деплой устроен через ссылку current на каталог релиза, pwd и pwd -P показывают разные пути, и по логам легко решить, что на стенде стоит не та версия.