При запуске
FILE='/tmp/1.txt' echo "file: $FILE"
оболочка расширяет переменную $FILE перед выполнением присваивания, поэтому, предполагая, что FILE ранее не был установлен, вы получите:
FILE='/tmp/1.txt' echo "file: "
Вы можете подтвердить это поведение, установив сначала известное значение FILE:
FILE="foo"
FILE='/tmp/1.txt' echo "file: $FILE"
Вторая строка расширяется до:
FILE='/tmp/1.txt' echo "file: foo"
Затем значение FILE в контексте этой команды изменяется на /tmp/1.txt
. Затем оболочка выполняет echo "file: foo"
Как упомянул @admstg в своем ответе, вы можете сделать:
FILE='/tmp/1.txt'; echo "file: $FILE"
Но это поведение отличается от того, что вы изначально пытались сделать. То, что у вас было изначально, устанавливает FILE только на время команды echo; вышеприведенное устанавливает его на время работы оболочки (или до тех пор, пока он не будет явно отключен).