Como os comentários do @AndreasWiese, você não pode fazer isso com um alias. Os aliases adicionam argumentos separados por espaços, portanto, você não pode uni-los (de uma maneira simples) ao comando com alias.
Um comentário sobre sua função: Por que você está usando $@
? Você deve usar $1
. Se você chamar sua função com vários argumentos ( p a b c
), provavelmente obterá um erro ( um diretório desconhecido. b: command not found
)