ChatGPT를 통해 리서치를 해보다가, Java에도 JBang이라는 .NET 10의 File-based App과 비슷한 접근법을 별도의 CLI 툴을 통해서 구현한 것이 있다는 것을 알게되서 조금 찾아봤는데, 여기는 #
기호 대신 /
기호를 지시자로 사용하기 때문인지 보편적인 Shebang 라인을 사용하지 않는다는 것을 알게 되었습니다.
///usr/bin/env jbang "$0" "$@" ; exit $?
//DEPS com.sun.net.httpserver:http:20070405
아주 정교한 트릭인데, /
를 여러번 사용한다 하더라도 ///usr/bin/env
는 어차피 /usr/bin/env
로 궁극적으로는 해석이 된다는 트릭을 이용해서 그냥 /usr/bin/env
명령을 호출하는 것이고, #
지시자를 쓰지 못하기 때문에 좀 더 시작 라인이 번거로워지긴 하지만, 어쨌든 필요한 인자를 모두 지정해서 완전하게 만드는 것이 가능한 모양입니다. 물론, Java 문법적으로 봤을 때에는 저 부분이 그냥 주석이 됩니다.
당연히 .NET FBA에도 동일하게 적용해볼 수 있을 것이라 생각하여 테스트해봤습니다. C# 입장에서도 //
로 시작하면 주석으로 취급되는 것은 동일하므로 똑같이 적용이 되는 셈입니다.
///usr/bin/env dotnet "$0" "$@" ; exit $?
#:sdk Microsoft.NET.Sdk.Web
#:property PublishAot=False
#:package Microsoft.Playwright@1.54.0
...
아래처럼 WSL 2 환경에서 잘 작동했습니다.