ไม่สามารถเรียกใช้ Bash 5 จาก launchd

Sep 21 2020

ฉันมีตัวแทน Launchd ต่อไปนี้:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>bash-check</string>
    <key>Program</key>
    <string>/Users/spark/tmp/bash-check</string>
    <key>StandardOutPath</key>
    <string>/Users/laktak/bash-check.log</string>
</dict>
</plist>

ด้วยสคริปต์ต่อไปนี้bash-check:

#!/usr/local/bin/bash

type bash
bash --version

ฉันไม่สามารถใช้ Bash 5 ( /usr/local/bin/bash) ได้บันทึกจากlaunchctl start bash-checkเสมอ:

bash is /bin/bash
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin19)
Copyright (C) 2007 Free Software Foundation, Inc.

คำตอบ

nohillside Sep 21 2020 at 16:04

สคริปต์ของคุณใช้typeเพื่อค้นหาอินสแตนซ์แรกของbashภายในPATHจากนั้นเรียกอินสแตนซ์นั้นทุกประการ ดังนั้นหาก/binเป็นก่อนหน้า/usr/local/bin(หรือมีแนวโน้มว่า/usr/local/binจะไม่อยู่ในPATH) เวอร์ชัน macOS bashจะถูกพบและดำเนินการ

เพื่อตรวจสอบเวอร์ชันของเชลล์ที่รันอยู่ให้ใช้

echo $BASH_VERSION

แทน.