Редактор 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
задан 29 May 2019 в 10:07

1 ответ

Вы не должны запускать atom в фоновом режиме, потому что эта команда не запускается atom обработайте непосредственно, а скорее просто сценарий начинающего. /usr/bin/atom сценарий оценивает опции CLI и устанавливает набор переменных прежде, чем запустить реальное atom процесс в фоновой подоболочке, посмотрите строку 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
1
ответ дан 29 May 2019 в 10:07

Другие вопросы по тегам:

Похожие вопросы: