ฉันใช้ Msys2 จาก PortableApps ภายใต้ Win 10 คำตอบสำหรับคำถามนี้ (เช่นการระบุตัวตนและการแก้ไขปัญหา) อาจเกี่ยวข้องกับส่วนของ Unix / Linux ของการใช้งานหรือ "การปรับตัว" กับ Windows ผ่าน Msys2 ฉันไม่ทราบล่วงหน้า (ไม่เช่นนั้นฉันอาจจะแก้ไขได้ด้วยตัวเอง!) ดังนั้นฉันจึงโพสต์ก่อนหน้า (ลบออกตอนนี้) คำถามที่คล้ายกันในเว็บไซต์ SE อื่น ซึ่งเข้าถึงผู้ชมที่แตกต่างกัน
 ฉันมีฟังก์ชั่นของเชลล์ที่กำหนดไว้ my_fun.sh เช่น 
MYAPP=some_executable
function myfun() { echo "MYAPP=${MYAPP}" && ${MYAPP} "$@" ; }
 นั่นคือ some_executable ใช้ตัวเลือกและพารามิเตอร์
ฉันสามารถเรียกใช้ที่บรรทัดคำสั่ง 
$ some_executable -3 input.dat output.dat
 ตอนนี้ถ้าฉันเรียกใช้จากเชลล์สคริปต์ myscript.sh
comm="myfun -3 input.dat output.dat"
echo ${comm}
eval ${comm}
 (กับ echo ฉันแน่ใจว่าบรรทัดคือสิ่งที่ฉันต้องการ)
ฉันเข้าใจ 
./myscript.sh: line 8: myfun: command not found
 ถ้าฉันทำ export -f myfun แล้ว ./myscript.sh ฉันเริ่มได้รับ 
MYAPP=
environment: -3: command not found
ซึ่งแสดงแหล่งที่มาของปัญหา (ขอบคุณที่คอมเม้นต์โดย Kamil M)
 ในกล่อง Ubuntu ก่อนหน้านี้ export -f ... ฉันได้รับข้อผิดพลาดเช่นเดียวกับข้างต้น
แต่ export แก้ไขปัญหา 
อะไรคือสาเหตุของสิ่งนี้? มันเกี่ยวข้องกับการใช้งาน Linux / Bash แท้หรือแยกวิเคราะห์, การขยายเชลล์, การสืบทอดเชลล์, ฯลฯ ภายใต้ Msys2 แตกต่างกันเล็กน้อยหรือไม่? ฉันจะแก้ไขได้อย่างไรในลักษณะที่สคริปต์เดียวกันทำงานภายใต้ Msys2 และ Ubuntu
ที่เกี่ยวข้อง: https://unix.stackexchange.com/questions/444946/how-can-we-run-a-command-stored-in-a-variable
-3: command not foundดังนั้นฉันสงสัย MYAPP มันว่างเปล่า. มันกำหนดไว้ในสคริปต์เดียวกันหรือไม่ ถ้าไม่ส่งออกหรือไม่ 
                
#!ล่ามสคริปต์ของคุณใช้? คุณกำลังใช้เวอร์ชันทุบตีรุ่นใด