diff --git a/lib/Slic3r/Config.pm b/lib/Slic3r/Config.pm
index aa645b99d..5c3529caf 100644
--- a/lib/Slic3r/Config.pm
+++ b/lib/Slic3r/Config.pm
@@ -528,6 +528,16 @@ sub save {
     close $fh;
 }
 
+sub setenv {
+    my $class = shift;
+    foreach my $opt (sort keys %$Options) {
+        next if $Options->{$opt}{gui_only};
+        my $value = get($opt);
+        $value = $Options->{$opt}{serialize}->($value) if $Options->{$opt}{serialize};
+        $ENV{"SLIC3R_" . uc $opt} = $value;
+    }
+}
+
 sub load {
     my $class = shift;
     my ($file) = @_;
diff --git a/lib/Slic3r/Print.pm b/lib/Slic3r/Print.pm
index 7bf490c56..2c9948ce1 100644
--- a/lib/Slic3r/Print.pm
+++ b/lib/Slic3r/Print.pm
@@ -311,6 +311,7 @@ sub export_gcode {
     # run post-processing scripts
     if (@$Slic3r::post_process) {
         $status_cb->(95, "Running post-processing scripts");
+        Slic3r::Config->setenv;
         for (@$Slic3r::post_process) {
             Slic3r::debugf "  '%s' '%s'\n", $_, $output_file;
             system($_, $output_file);