Questions tagged «posix»

POSIX是可移植操作系统接口(Portable Operating System Interface)的缩写,可移植操作系统接口是IEEE为维护操作系统之间的兼容性而指定的一系列标准。

2
如何测试以查看$ PATH中是否存在应用程序?
我正在尝试编写所有sh启动/环境脚本,以使用尽可能多的DRY和尽可能多的DRY:“可在我将其克隆到的每个* nix上使用”。这意味着确保如果我尝试运行不存在的代码,则代码会正常运行。为此,我需要能够测试程序是否存在。我知道如何测试文件是否存在,但是我不确定如何测试应用程序在路径内是否可执行。我宁愿使用$ PATH,因为其中一些需要在arch,ubuntu和centos上工作。有些可能安装在我的root目录中,没有我的系统上,有些可能没有安装,还有一些我安装在系统路径中。

1
fc命令中的字母代表什么?
我刚刚遇到了fc命令,该命令使您可以编辑上一个命令,然后再发布。 它具有FCEDIT用于设置其编辑器的自己的环境变量,以及POSIX程序员手册(1p)中的手册页。 它创建在一个文件/tmp目录,如果该文件(保存执行内容:wq中vim)。 除此之外,它还可以编号并列出fc -l以前执行的命令以供选择。 因此,知道这是非常方便的命令。 问题是它的名字的真正含义是什么?如何将命令与其功能联系起来? “一流”?甚至只是“功能”(撰写上一句话后,我想到什么)? 该手册将其简称为“ fc实用程序”。
19 zsh  command  posix 

2
为什么POSIX要求某些Shell内置程序具有外部实现?
从这个关于printf是否是yash内置的问题开始,这个答案引用了POSIX标准。 答案指出,POSIX搜索序列是查找所需命令的外部实现,然后,如果外壳将其实现为内置程序,则运行内置程序。(对于不是特殊内置的内置。) 为什么POSIX在允许运行内部实现之前对存在外部实现有此要求? 似乎……随心所欲,所以我很好奇。

4
符合checkbashisms的方法来确定当前shell
在我的文章中.profile,我使用以下代码来确保仅在登录shell实际上是Bash时才获得与Bash相关的别名和函数: # If the current (login) shell is Bash, then if [ "${BASH_VERSION:-}" ]; then # source ~/.bashrc if it exists. if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi 我目前正在将我的shell配置文件,脚本和函数置于版本控制之下。我也最近开始去除shell脚本不从击的特定功能中受益,如休闲bash化,更换的过程中function funcname()有funcname()。 对于我的shell文件存储库,我已经配置了一个预提交钩子,该存储库中的每个文件都运行checkbashismsDebian的devscripts包中的实用程序,sh以确保我不会无意中引入Bash特定的语法。但是,这给我带来了一个错误.profile: possible bashism in .profile line 51 ($BASH_SOMETHING): if [ "${BASH_VERSION:-}" ]; then 我想知道是否有一种方法可以检查正在运行的shell,而不会触发checkbashisms。 我检查了POSIX列出的与外壳相关的变量的列表,希望它们中的一个可以用来显示当前的外壳。我还查看了在交互式Dash shell中设置的变量,但是,再次找不到合适的候选对象。 目前,我已经排除.profile因被处理checkbashisms; …

4
使用#!/ bin / sh或#!/ bin / bash以获得Ubuntu-OSX兼容性以及易用性和POSIX
我知道我可以用作第一行脚本来调用所需的shell。 将#!/bin/sh被推荐,如果所有的UNIX系统的兼容性是一个绝对的要求? 就我而言,我唯一关心的OS是Ubuntu(Debian)和OSX。鉴于此,我是否可以使用#!/bin/bash并确保它在两个系统上都可以工作? 这还会使使用更现代,更清晰的命令语法的脚本更容易使用吗?使用是否#!/bin/sh还与使用POSIX有关?
18 bash  shell  ubuntu  osx  posix 

2
chown(1)POSIX规范的说明
该chown实用程序的POSIX规范在其理论部分中提到了chown user:group语法(以前称为chown user.group)(强调我的语法): POSIX.1-2008的此卷中包含了同时指定所有者和组的4.3 BSD方法,因为: 在某些情况下,使用chgrp和chown(仅更改用户ID)实用程序无法达到所需的最终条件。(如果当前所有者不是所需组的成员,并且所需所有者不是当前组的成员,则除非所有者和组同时更改,否则chown()函数可能会失败。) 我认为user:group语法很方便。现在,上述暗示有事情可以做chown user:group,你不能用chgrp group; chown user 现在,这段文字对我来说毫无意义。在4.3BSD中,只有root才能更改所有者的文件,因此无论如何他都没有限制。 SysV和其他一些系统允许(或用来允许)文件所有者将文件的用户和组更改为任何内容,但是即使在那些系统中,上面的文字对我来说也没有意义。好的,如果有人这样做了chown someone-else the-file,则不能再做chgrp something-else the-file,因为一个人不再是文件的所有者,但是并没有阻止他(她)做第chgrp一个文件(保持文件的所有者)和chown之后的事情,而那不是上面的文字准确地说。 我不了解和所希望的所有者不是当前组的成员与该问题有什么关系。 那么,除非所有者和组都同时更改,否则chown()函数可能会在哪些情况下失败?在什么系统上?
18 posix  chown 

3
POSIX为什么未指定`#!`语法的行为?
在POSIX规范的Shell命令语言页面中: 如果shell命令文件的第一行以字符“#!”开头,则结果不确定。 为什么#!POSIX无法指定行为?我感到困惑的是,如此便携式和广泛使用的东西将具有未指定的行为。
17 shell  posix  shebang 





1
为什么允许“谁mil”不产生任何输出?
在2016年版的IEEE Std 1003.1-2008(又名Open Group基本规范第7期,或仅是POSIX标准)中,该who实用程序的“基本原理”部分提到以下内容: 一个实现对于调用who mil不产生任何输出是可以接受的。 谁或什么是“密尔”?为什么实现不允许产生任何输出who mil?
16 history  posix  who 

3
将POSIX查找限制在特定深度?
我最近注意到POSIX规范find不包括-maxdepth主要规范。 对于那些不熟悉它的人,主要的目的-maxdepth是限制find将下降多少个深度。 -maxdepth 0结果仅处理命令行参数;-maxdepth 1仅在命令行参数等中直接处理结果。 -maxdepth仅使用POSIX指定的选项和工具,如何获得与非POSIX 主要对象相同的行为? (注意:当然-maxdepth 0,只要将其-prune用作第一个操作数,就可以得到与之相当的结果,但这不会扩展到其他深度。)
15 find  posix 

2
哪一种是sed,awk,perl和sh中最便于移植的?
有人可以按可移植性顺序放置这些工具吗?即使在最小的* nix系统上,肯定可以找到其中的哪一个?是否肯定有100%存在?我的猜测是顺序如下: awk sed SH 佩尔 虽然我想象有些系统没有默认使用bourne shell,但是某些 shell将作为默认存在,会一直在/bin/sh吗?如果不是bourne型shell,大概不会。双方awk并sed有解释他们对POSIX规范的页面所以想必他们将始终存在。是这样吗?我可以确定两者都将安装在任何* nix上吗?包括嵌入式系统?

1
POSIX是否等同于GNU超时?
timeout对于某些脚本情况,GNU coreutils 命令非常方便,如果可以快速运行,则允许使用命令的输出;如果花费太长时间,可以跳过该命令的输出。 如何近似timeout仅使用POSIX指定的实用程序的基本行为? (我想它可能涉及的组合wait,sleep,kill和谁知道什么,但也许我失去了一个更简单的方法。)

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.