If the input contains a #!/bin/sh shebang, it currently outputs as #!/bin/sh, this populates fish scripts with the wrong shebangs. It'd be great if we could use #!/usr/bin/env fish instead.
In fish, shebangs are not strictly necessary in many scenarios:
The shebang line is only used when scripts are executed without specifying the interpreter. For functions inside fish or when executing a script with fish /path/to/script, a shebang is not required (but it doesn’t hurt!).
— See Introduction — Shebang Line — fish-shell documentation
Ideally, we'd only emit #!/usr/bin/env fish if the first line is a valid shebang (#!/bin/sh, #!/bin/bash, #!/usr/bin/env bash, etc.), and not emit said shebang if the input lacks one. Additionally, we could preserve the empty line after the shebang.
Examples
Currently, a file:
#!/bin/sh
f() {
echo 'This is the f function'
}
Will emit:
#!/bin/sh
function f
echo 'This is the f function'
end
Instead of the desired:
#!/usr/bin/env fish
function f
echo 'This is the f function'
end
If the input contains a
#!/bin/shshebang, it currently outputs as#!/bin/sh, this populatesfishscripts with the wrong shebangs. It'd be great if we could use#!/usr/bin/env fishinstead.In
fish, shebangs are not strictly necessary in many scenarios:Ideally, we'd only emit
#!/usr/bin/env fishif the first line is a valid shebang (#!/bin/sh,#!/bin/bash,#!/usr/bin/env bash, etc.), and not emit said shebang if the input lacks one. Additionally, we could preserve the empty line after the shebang.Examples
Currently, a file:
Will emit:
Instead of the desired: