Questions tagged «portability»



9
// foo / bar在什么系统上与/ foo / bar不同?
在整个POSIX规范,有规定(1,2,3 ...),以允许实施治疗路径开始有两个/特别。 POSIX应用程序(编写为POSIX规范以移植到所有POSIX兼容系统的应用程序)不能假定//foo/bar与相同/foo/bar(尽管可以假定///foo/bar与相同/foo/bar)。 现在,那些//foo特别对待的POSIX系统(历史的和仍在维护的)是什么?我相信(现已证明我错了),POSIX规定已由Microsoft推销为其Unix变体(XENIX)以及Windows POSIX层(有人可以确认吗?)。 Cygwin使用它,它也是Microsoft Windows的类似于POSIX的层。是否有任何非Microsoft Windows系统?OpenVMS? 在//foo/bar特殊的系统上,它的用途是什么?//host/path用于网络文件系统访问?虚拟文件系统? 如果某些运行在类Unix之类的应用程序(如果不是系统的API)上的应用程序是否对//foo/bar路径进行了特殊处理(在它们被/foo/bar视为文件系统路径的情况下)? 编辑,此后,我在奥斯汀小组邮件列表上询问了//foo/bar有关规范中处理起源的问题,并且该讨论是有趣的阅读(至少从考古学角度而言)。

18
使用shell检测init系统
这可能与检测操作系统有关,但是我特别需要系统上当前使用的初始化系统。 Fedora 15和Ubuntu现在使用systemd,Ubuntu曾经使用Upstart(长期使用默认时间是15.04),而其他人则使用System V的变体。 我有一个要编写为跨平台守护程序的应用程序。初始化脚本是基于可以在configure上传递的参数动态生成的。 我只想为他们正在使用的特定初始化系统生成脚本。这样,安装脚本可以在没有参数的情况下作为root合理运行,并且可以自动“安装”守护程序。 这是我想出的: 在/ bin中搜索systemd,upstart等 将/ proc / 1 / comm与systemd,upstart等进行比较 询问用户 最好的跨平台跨平台方法是什么? 相关的一种,我可以依赖bash来依赖大多数* nix还是依赖于发行版/ OS? 目标平台: 苹果系统 Linux(所有发行版) BSD(所有版本) Solaris,Minix和其他* nix

6
可移植外壳编程资源
便携式外壳编程有哪些资源?最终的答案是在所有目标平台上进行测试,但这几乎不可行。 该POSIX /统一UNIX规范是一个开始,但它会告诉你也不支持每个实现的水平是什么,也没有什么共同的扩展存在。您可以阅读每个实现的文档,但这非常耗时,而且不完全准确。 在我看来,一种理想的格式应该是某种POSIX规范的社区注释版本,其中每个功能都由其在不同实现中的支持级别进行注释。有这样的事吗?还是还有其他有用的资源? 例如,有Sven Mascheck的shell可移植性页面,但这仅涉及语法元素和一些内置插件,并且仅涵盖旧的shell。我正在寻找更全面的资源。

5
/ dev / stdin,/ dev / stdout和/ dev / stderr的可移植性如何?
偶尔我需要指定一个“路径相当于”标准的IO流之一(的stdin,stdout,stderr)。由于我有99%的时间使用Linux,所以我只是假装/dev/get /dev/stdin等,这“ 似乎做对了”。但是,一方面,我一直对这样的理由感到不安(因为“当然,它似乎起作用”,直到不起作用为止)。此外,我对这种机动的便携性没有很好的认识。 所以我有几个问题: 在Linux中的情况下,它是安全(是/否)划上等号stdin, stdout以及stderr用/dev/stdin,/dev/stdout和 /dev/stderr? 更笼统地说,这种等效性“足够便携 ”吗? 我找不到任何POSIX参考。

7
test或[或[[在bash外壳之间和其他外壳之间都更容易移植吗?
我知道我能做 $ [ -w /home/durrantm ] && echo "writable" writable 要么 $ test -w /home/durrantm && echo "writable" writable 要么 $ [[ -w /home/durrantm ]] && echo "writable" writable 我喜欢使用第三种语法。它们在所有方面以及所有消极和极端情况下是否等效?在可移植性方面是否存在任何差异,例如在Ubuntu和OS X上的bash或较旧/较新的bash版本(例如4.0之前/之后)之间,它们是否都以相同的方式扩展表达式?

7
如何使用sed -i(就地编辑)实现可移植性?
我正在为服务器编写Shell脚本,该服务器是运行FreeBSD的共享主机。我还希望能够在运行Linux的PC上本地测试它们。因此,我试图以一种可移植的方式编写它们,但是sed我看不到这样做的方法。 我的网站的一部分使用了生成的静态HTML文件,此sed行在每次重新生成后插入正确的DOCTYPE: sed -i '1s/^/<!DOCTYPE html> \n/' ${file_name.html} 它sed在Linux上可以与GNU一起使用,但是FreeBSD sed希望-ioption 后的第一个参数是备份副本的扩展名。它是这样的: sed -i '' '1s/^/<!DOCTYPE html> \n/' ${file_name.html} 但是,GNU sed依次期望表达式在之后-i。(它也需要使用换行符进行修复,但这已在此处得到解答) 当然,我可以将此更改包含在脚本的服务器副本中,但这会很混乱,即我使用VCS进行版本控制。有没有办法以完全可移植的方式使用sed实现此目的?

7
可移植的方式来获取脚本的绝对路径?
(zsh)脚本确定其绝对路径的可移植方式是什么? 在Linux上,我使用类似 mypath=$(readlink -f $0) ...但这不是便携式的。(例如,readlink在darwin上,该-f标志无法识别,也没有任何等效的标志。)(当然,readlink为此使用的是一个相当晦涩的hack。) 有什么更便携的方式?

3
将Linux移植到另一个平台要求
我知道Linux可用并且已经移植到许多不同的平台,例如X86,ARM,PowerPC等。 但是,在移植方面,究竟需要什么? 我的理解是Linux是用C语言编写的软件。因此,例如,当最初将Linux从X86移植到ARM或其他操作系统时,不仅仅是针对特定目标体系结构用编译器重新编译代码吗? 撇开用于不同外围设备的设备驱动程序,将Linux移植到新架构时还需要做其他事情。编译器会不会为我们处理所有事情?

4
测试shell脚本中变量是否为空
我已经看到以下技术在许多不同的shell上多次使用,以测试变量是否为空: if [ "x$1" = "x" ]; then # Variable is empty fi 与更规范的用法相比,使用此方法有什么好处if [ -z "$1" ]吗?可能是可移植性问题吗?

4
sudo有多普遍?
我正在写一些有关如何安装某些东西的说明(与TeX有关-如果您不问,我不会通过提供更多详细信息破坏您的一天),并用于sudo在系统范围内安装。有人评论说,他们认为并非sudo所有Linux(或Unix)发行版都提供该功能。 是否有没有的Unix发行版,sudo如果是的话,它们是什么?是否有一个举世公认的“给我超级用户权限”命令,该命令是在所有系统上?

2
如何在不知道远程用户的登录shell的情况下通过ssh执行任意简单的命令?
ssh 在运行时具有令人讨厌的功能: ssh user@host cmd and "here's" "one arg" 而不是cmd使用参数将其打开host,而是cmd使用空格将其和参数连接在一起,然后运行shell host来解释结果字符串(我猜这就是为什么调用它ssh而不是它的原因sexec)。 更糟糕的是,您不知道将使用什么shell来解释该字符串,因为user甚至登录的shell 都无法保证是Bo​​urne,因为仍然有人们在使用它tcsh作为登录shell,并且这种fish情况还在增加。 有办法解决吗? 假设我有一个命令作为存储一个在参数列表bash阵列,其每一个可以包含的非空字节的任何序列,是否有任何方式把它上执行host如user以一致的方式,无论该登录壳的user上host(我们假设这是主要的Unix shell系列之一:Bourne,csh,rc / es,fish)? 另一种合理的假设,我应该能够提出的是,有是sh在命令host中可用的$PATH是Bourne兼容。 例: cmd=( 'printf' '<%s>\n' 'arg with $and spaces' '' # empty $'even\n* * *\nnewlines' "and 'single quotes'" '!!' ) 我可以使用ksh/ zsh/ bash/ 在本地运行yash: $ "${cmd[@]}" <arg with $and spaces> <> <even …

5
是否建议使用zsh而不是bash脚本?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4天前关闭。 我可以假设已经zsh安装了足够的人来运行带有 #!/usr/bin/env zsh 如shebang? 还是这会使我的脚本在太多系统上无法运行? 澄清:我对最终用户可能要运行的程序/脚本感兴趣(例如在Ubuntu,Debian,SUSE,Arch&c。上)

8
Linux最通用的脚本语言是?
这个问题是从Stack Overflow 迁移过来的,因为可以在Unix&Linux Stack Exchange上回答。 迁移 7年前。 我们正在为Linux系统编写脚本,关于使用哪种最普遍的Linux当前脚本语言一直存在一些争论。Bash,SH,Posix?什么?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.