Jalankan program dari skrip shell tetapi berperilaku sebagai satu proses saja?

12

Apakah ada cara saya dapat menjalankan aplikasi dari skrip shell tetapi tidak membuat proses lain. Saya ingin itu terlihat seperti satu proses saja . Tidak masalah apakah skrip shell saya diganti oleh proses baru atau apakah akan dilanjutkan setelah aplikasi yang dipanggil berakhir.
Ini juga harus menyelesaikan pertanyaan saya sebelumnya: /ubuntu/247632/is-there-a-way-to-associate-additional-application-launcher-with-an-app
Terima kasih banyak atas bantuan Anda .

zubozrout
sumber

Jawaban:

7

Anda dapat menggunakan execperintah:

$ help exec
exec: exec [-cl] [-a name] [command [arguments ...]] [redirection ...]
    Replace the shell with the given command.

    Execute COMMAND, replacing this shell with the specified program.
    ARGUMENTS become the arguments to COMMAND.  If COMMAND is not specified,
    any redirections take effect in the current shell.

    Options:
      -a name   pass NAME as the zeroth argument to COMMAND
      -c        execute COMMAND with an empty environment
      -l        place a dash in the zeroth argument to COMMAND

    If the command cannot be executed, a non-interactive shell exits, unless
    the shell option `execfail' is set.

    Exit Status:
    Returns success unless COMMAND is not found or a redirection error occurs.

Contoh:

user@host:~$ PS1="supershell$ "
supershell$ bash
user@host:~$ PS1="subshell$ "
subshell$ exec echo hello
hello
supershell$ 

Seperti yang Anda lihat, subshell diganti oleh echo.

Andrea Corbellini
sumber
Terima kasih atas jawaban Anda. Saya dapat menjalankan mis ini: "exec -a firefox gedit &" dan gedit muncul di peluncur sebagai Firefox. Tetapi tidak berfungsi untuk sebagian besar aplikasi.
zubozrout
Masalahnya kemungkinan besar adalah kenyataan bahwa meskipun saya membuat proses baru, ia menggunakan kedua nama, yang asli dan yang baru didefinisikan. Output PS: 1000 6151 0.0 0.0 13720 944 poin / 2 R + 10:49 0:00 grep --color = auto firefox | 10006153 0.0 0.0 13716 940 poin / 2 S + 10:49 0:00 grep --color = auto gedit
zubozrout
Bolehkah saya bertanya mengapa Anda menggunakan &di akhir perintah Anda? Itu akan menjalankan perintah dalam sebuah subkulit, yang persis apa yang tidak Anda inginkan.
Andrea Corbellini
Ya, saya hanya mencobanya di terminal, bukan skrip shell.
zubozrout
2
Jadi, saya membaca pertanyaan Anda sebelumnya dan sepertinya Anda salah mengerti beberapa hal. Anda membingungkan proses dengan argumen nol dengan PID dengan peluncur dasbor . Dan Anda juga mengajukan pertanyaan yang salah. Yang ingin Anda tanyakan adalah pertama: bagaimana dasbor menghubungkan peluncur ke proses? Setelah Anda menemukan jawaban untuk pertanyaan itu, Anda juga akan menemukan jawaban untuk pertanyaan awal Anda.
Andrea Corbellini