首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有用于/bin/sh的.bashrc的替代方案?

是否有用于/bin/sh的.bashrc的替代方案?
EN

Stack Overflow用户
提问于 2016-09-21 16:27:36
回答 2查看 18.9K关注 0票数 23

我需要一个在/bin/sh启动时运行的脚本,类似于.bashrc for /bin/bash。有办法这样做吗?

编辑:

我尝试了/etc/profile~/.profile,并将echo 'hello world'写到了两个文件中。这些都不起作用。当我在控制台中输入sh时,什么都不会弹出。

我正在使用ArchLinux。

EN

Stack Overflow用户

发布于 2016-09-21 16:32:40

我将假设,就像在类似debian的系统上一样,您的/bin/shdash

对于破折号,将环境变量ENV设置为具有您选择的初始化文件的路径。这将是达什的模拟~/.bashrc

如果您对登录shell感兴趣,dash会读取~/.profile

例如,可以在~/.profile中添加

代码语言:javascript
复制
ENV=$HOME/.shinit; export ENV

这将导致dash在交互式shell启动时读取~/.shinit

编辑

“我尝试了/etc/profile和~/.profile,在这两个文件中都写了echo 'hello world‘。这些文件都没有工作。当我在控制台中输入sh时,什么都不会弹出。”

这些文件只为登录shell读取。如果您只是在命令提示符下运行sh,那么您将启动一个交互式shell。

文档

来自man dash

调用 如果不存在are,如果shell的标准输入连接到终端(或者设置了-i标志),并且不存在-c选项,则shell被视为交互式shell。交互式shell通常在每个命令之前提示,并以不同的方式处理编程和命令错误(如下所述)。当第一次启动时,shell检查参数0,如果以破折号“-”开头,则shell也被视为登录shell。这通常由系统在用户第一次登录时自动完成。登录shell首先从文件/etc/profile和.profile (如果存在的话)读取命令。如果环境变量ENV是在进入交互式shell时设置的,或者是在登录shell的.profile中设置的,则shell接下来将从ENV中命名的文件中读取命令。因此,用户应该在文件中放置仅在登录时才执行的命令,以及对ENV文件中的每个交互shell执行的命令。要将ENV变量设置为某个文件,请将以下行放在主目录的.profile中 ENV =$HOME/..shinit;出口ENV 替代“.shinit”任何您想要的文件名。 如果指定了选项之外的命令行参数,则shell将第一个参数视为读取命令的文件名( shell脚本),其余参数设置为shell的位置参数($1、$2等)。否则,shell从其标准输入中读取命令。重点补充。

POSIX

来自POSIX标准 (帽子提示:切普纳):

ENV 此变量仅在调用交互式shell时由shell进行参数扩展(请参阅参数扩展),其结果值将用作包含在当前环境中执行的shell命令的文件的路径名。该文件不需要可执行。如果ENV的展开值不是绝对路径名,则结果不指定。如果进程的实际有效用户ID或实际有效组ID不同,则应忽略ENV。

票数 12
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39621880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档