AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 469563
Accepted
bcan
bcan
Asked: 2018-09-18 05:43:54 +0800 CST2018-09-18 05:43:54 +0800 CST 2018-09-18 05:43:54 +0800 CST

/etc 目录中是否有 dash 和 sh 作为非登录 shell 的调用文件?

  • 772

/etc/profile可以在交互式登录模式sh中调用。当它们处于交互式非登录模式时dash,目录中是否有要调用的文件?/etc

shell dash
  • 2 2 个回答
  • 1687 Views

2 个回答

  • Voted
  1. Best Answer
    Kusalananda
    2018-09-18T06:42:15+08:002018-09-18T06:42:15+08:00

    dashshell(sh如果由 实现)在作为登录 shell 启动时dash读取。/etc/profile然后它读取~/.profile。该~/.profile文件可以设置和导出ENV环境变量。此变量应保存由非登录 shell 提供的文件的路径。这通常是逐个用户完成的,而不是在/etc.

    从dash手册(我的重点):

    如果环境变量ENV在进入交互式 shell 时设置,或者在.profile登录 shell 中设置,则 shell 接下来从名为 in 的文件中读取命令ENV。 因此,用户应该将仅在登录时执行的.profile 命令放在文件中,并将为每个交互式 shell 执行的命令放在ENV文件中。 要将ENV变量设置为某个文件,请将以下行放在您.profile的主目录中

    ENV=$HOME/.shinit; export ENV
    

    替换.shinit您想要的任何文件名。

    当从其他 shell 或进程调用sh或dash创建交互式非登录 shell 会话时,只需确保将ENV其设置为适当的 shell 初始化文件。这可以使用任何 Bourne 类型的 shell 来完成

    ENV="$HOME/.shinit" sh
    

    或者

    ENV="$HOME/.shinit" dash
    
    • 2
  2. Daniel Doherty
    2022-08-30T03:08:13+08:002022-08-30T03:08:13+08:00

    关于这些命令的另一件事:它们都调用 /bin/sh(通常是类 unix 系统上的破折号 shell),但它们将其作为登录 shell 调用,而不是交互式 shell。所以 ENV 指向的文件不会被执行,只有硬连线的 /etc/profile 和 ~/.profile。

    为了读取 ENV,您似乎必须将“sh -i -c”放在 shell 命令前面并引用 -c 后面的命令。

    sh_command = 'sh -i -c "' + command + ' ' + args.join(' ') + '"'
    env = { 'ENV' => Your.shellrc_file }
    std_out, std_err, status = Open3.capture3(env, sh_command)
    

    然后您会遭受让登录 shell 调用交互式 shell 的效率非常低的问题,但 ENV 将不再被忽略。如果您更喜欢 bash,这也允许您更改 sh->bash 或 ksh 或 zsh 或 fish 等。

    • 0

相关问题

  • 这个命令是如何工作的?mkfifo /tmp/f; 猫/tmp/f | /bin/sh -i 2>&1 | 数控 -l 1234 > /tmp/f

  • FreeBSD 的 sh:列出函数

  • 有没有办法让 ls 只显示某些目录的隐藏文件?

  • grep -v grep 有什么作用

  • 如何将带有〜的路径保存到变量中?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve