How to call from a shell program a postgresql COPY FROM FILE command, passing the path of the FILE as an argument?
Utility commands like COPY and many others do not accept expressions where literals are expected, so the file name must be given verbatim.
You may use \set in psql to build the filename by concatenating a path with a name, as in:
$ cat script.sql
\set path :v1 '/new_nomenclature.csv'
COPY nomenclature FROM :'path' CSV ....

$ psql -f script.sql -v v1=&quot;/tmp&quot;

When \set is not suitable, another way is to call SELECT to build the string, get the result into a psql variable, and feed it back to COPY (this might come handy if building the path requires more than a mere concatenation)
$ cat script.sql
select :'v1' || '/new_nomenclature.csv' AS path \gset
COPY nomenclature FROM :'path' CSV ....