标签: shebang

我可以有条件的shebang吗?

我有一个可以使用不同解释器运行的脚本:

#!/usr/bin/env default-interpreter
[my script]
Run Code Online (Sandbox Code Playgroud)

但我想使用alternative-interpreter它,如果它可用,就像这样:

#!/usr/bin/env alternative-interpreter
[my script]
Run Code Online (Sandbox Code Playgroud)

有没有办法创建一个shebang来查找alternative-interpreter并回退到default-interpreter第一个不可用的情况?

linux shebang

10
推荐指数
1
解决办法
2428
查看次数

#!/bin/sh -x 这行中的“x”是什么意思?

您能解释一下 shebang #!/bin/sh -x 中“x”的含义吗?

这行有必要加“-x”吗?

linux script bash sh shebang

6
推荐指数
1
解决办法
1万
查看次数

#!(shebang) 行长度限制

在开发 GNU Parallel 时,我似乎遇到了 #! (舍邦)。这个shebang行:

#!/bin/echo 123456789a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789j123456789k123456789done bar
Run Code Online (Sandbox Code Playgroud)

在 Debian、Mandriva、SuSE、Ubuntu、Centos、RedHat 上打印:

123456789a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789j123456789k12345 ./shebang
Run Code Online (Sandbox Code Playgroud)

所以它似乎在128个字节后被砍掉了。但它在 FreeBSD、DragonFlyBSD 和 Hurd 上完成了我所期望的(打印整行)。在 OpenBSD 和 Tru64 上,它什么也不打印(?!)。

造成这种限制的原因是什么?我可以解决它吗?

背景

GNU Parallel 的 --shebang 使得在 #! 行中编写完整的并行命令成为可能。因此,如果完整命令只能是 128 个字符,则在某种程度上受到限制。

文件的其余部分用作并行的输入,因此不能在那里写入命令。

linux unix shebang

3
推荐指数
1
解决办法
1600
查看次数

Shebangs 不喜欢 OSX 中的 sudo

在 shebang 中使用 sudo 似乎完全被破坏了。下面的代码:

#!/usr/bin/sudo /bin/bash
echo "this should work"
Run Code Online (Sandbox Code Playgroud)

在 Ubuntu 上工作正常,但在 OSX 上给我:

sudo: effective uid is not 0, is /usr/bin/sudo on a file system with the 
'nosuid' option set or an NFS file system without root privileges?
Run Code Online (Sandbox Code Playgroud)

有什么想法如何让它发挥作用吗?

注意: sudo 工作得很好,否则:

/usr/bin/sudo echo "This works"
Password:
This works
Run Code Online (Sandbox Code Playgroud)

linux sudo osx-mavericks shebang macos

1
推荐指数
1
解决办法
1299
查看次数

标签 统计

linux ×4

shebang ×4

bash ×1

macos ×1

osx-mavericks ×1

script ×1

sh ×1

sudo ×1

unix ×1