Это не проблема, скорее вопрос любопытства. Когда я открываю редактор 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
Вы не должны запускать 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