Atom 编辑器默认在后台打开

Atom 编辑器默认在后台打开

这不是一个问题,更多的是一个好奇的问题。当我使用命令行打开 Atom 编辑器时,atom它会在后台打开。(所以我立即返回到终端中的命令提示符。)通常,如果我使用命令行打开应用程序,applicationname它会在前台运行。如果我想在后台运行它(我通常会这样做),我会applicationname &改为提供。

我为什么不必这么做atom &

就像我说的,这不是问题,因为我通常想继续在同一个目录中工作,但我很好奇为什么。

$ file $(which atom)
/usr/bin/atom: Bourne-Again shell script, ASCII text executable/usr/bin/atom: Bourne-Again shell script, ASCII text executable

答案1

您不必atom在后台启动,因为此命令不会atom直接启动进程,而只是启动一个启动脚本。该/usr/bin/atom脚本在启动之前评估 CLI 选项并设置一堆变量真实的 atom过程在后台子 shell 中,参见第 180 行以下各行(我的注释):

# start a subshell in the background (note “&” below!)
(
# start the Atom process with the current script’s PID redirecting its output to nohup.out
nohup "$ATOM_PATH" --executed-from="$(pwd)" --pid=$$ "$@" > "$ATOM_HOME/nohup.out" 2>&1
# in case of any error, print the output and exit
if [ $? -ne 0 ]; then
  cat "$ATOM_HOME/nohup.out"
  exit $?
fi
) &

让我们看看哪个文件是atom这里启动的真正可执行文件:

  • 它开始$ATOM_PATH于第 163 行:

    ATOM_PATH="$USR_DIRECTORY/share/atom/atom"
    
  • $USR_DIRECTORY在第 150 行设置:

    USR_DIRECTORY=$(readlink -f $(dirname $SCRIPT)/..)
    

    这等于:

    USR_DIRECTORY=$(readlink -f $(dirname /usr/bin/atom)/..) # equals
    USR_DIRECTORY=$(readlink -f /usr/bin/..) # equals
    USR_DIRECTORY=$(readlink -f /usr) # equals
    USR_DIRECTORY=/usr
    

现在我们有了可执行文件的完整路径atom/usr/share/atom/atom。的输出file证实:

$ file /usr/share/atom/atom
/usr/share/atom/atom: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 2.6.32, stripped

相关内容