簡體   English   中英

linux下shebang不拆分參數

[英]shebang under linux does not split arguments

我有 kotlin 腳本(但它可以是任何帶參數的 Linux 命令),例如:

#!/usr/bin/env kotlinc -script
println("hello world")

在Linux上,您不能通過shebang行傳遞多個參數。 所有參數都將作為單個字符串傳遞給可執行文件:

#!/bin/foo -a -b -c

將一個選項“-a -b -c”傳遞給/bin/foo ,再加上文件的內容。 就像你打電話:

/bin/foo '-a -b -c' contents-of-file.txt

現在大多數unix派生的行為應該是相同的,但它可以有所不同,我還沒有測試過它們:)

很難找到適當的文檔,我能很快找到的最好的是: https//www.in-ulm.de/~mascheck/various/shebang/#splitting


作為一種解決方法,您通常會創建一個shell包裝器:

#!/bin/bash
exec kotlin --arg1 --arg2 ... /path/to/kotlin-script

檢查您的coreutils版本:

apt-cache policy coreutils

從coreutils 8.30開始,您將能夠使用:

#!/usr/bin/env -S command arg1 arg2 ...

您可能需要升級coreutils

對我來說,解決方案是安裝 kotlin,因為我還沒有安裝它,只是下載了https://github.com/bernaferrari/GradleKotlinConverter並認為它應該可以工作。

sudo snap install kotlin --classic

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM