Самый легкий путь состоит в том, чтобы установить разделителя полей на ":"
awk -F":" '$2~/user/{print $1}' /etc/userdomains
And if you want to check for exact username,
awk -F"[ \t]*:[ \t]*" '$2=="user"{print $1}' /etc/userdomains
Это должно быть той же ошибкой как в пользовательской оболочке входа в систему, потому что во входе в систему окружают 0
параметр оболочки, расширяясь до названия текущего процесса, дает -bash
, минус указание на оболочку входа в систему. Вы теперь видите где -b
ошибка прибывает из.
Попробуйте вместо этого
echo "$( dirname "$(readlink -f -- "$0")" )"
Если Вы действительно хотите имя каталога сценария оболочки, который выполняется:
script_dir="$(dirname -- "$(readlink -f -- "$0")")"
Да, это - немного cludgy, но это безопасно.
Если Вы хотите текущую оболочку, можно попробовать предложение @MichaelMrozek использования $SHELL
.