เรียกใช้โปรแกรมจากเชลล์สคริปต์ แต่ทำงานเป็นหนึ่งกระบวนการเท่านั้น


12

มีวิธีที่ฉันสามารถรันแอปพลิเคชันจากเชลล์สคริปต์ แต่ไม่ได้สร้างกระบวนการอื่น ฉันต้องการให้มีลักษณะเหมือนขั้นตอนการเพียงคนเดียว ไม่ว่าเชลล์สคริปต์ของฉันจะถูกแทนที่ด้วยกระบวนการใหม่หรือไม่ว่าจะดำเนินการต่อหลังจากที่แอปพลิเคชันที่เรียกใช้สิ้นสุดลง
นี่ควรแก้ไขคำถามก่อนหน้าของฉันด้วย: /ubuntu/247632/is-there-a-way-to-associate-additional-application-launcher-with-an-app
ขอบคุณมากสำหรับความช่วยเหลือของคุณ .

คำตอบ:


7

คุณสามารถใช้execคำสั่ง:

$ 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.

ตัวอย่าง:

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

ในขณะที่คุณสามารถดู subshell echoจะถูกแทนที่ด้วย


ขอบคุณสำหรับคำตอบ. ฉันสามารถเรียกใช้เช่นนี้: "exec -a firefox gedit &" และดังนั้น gedit จึงปรากฏในตัวเรียกใช้งานเป็น Firefox แต่มันไม่ทำงานสำหรับแอพส่วนใหญ่
zubozrout

ปัญหาน่าจะเป็นความจริงที่ว่าแม้ว่าฉันจะสร้างกระบวนการใหม่จะใช้ทั้งชื่อชื่อเดิมและใหม่ที่กำหนดไว้ เอาต์พุต PS: 1,000 6151 0.0 0.0 13720 944 แต้ม / 2 R + 10:49 0:00 grep --color = auto firefox | 1,0006153 0.0 0.07 13716 940 pts / 2 S + 10:49 0:00 grep --color = auto gedit
zubozrout

ฉันขอถามได้ไหมว่าทำไมคุณถึงใช้&เมื่อสิ้นสุดคำสั่ง? ที่จะเรียกใช้คำสั่งใน subshell ซึ่งเป็นสิ่งที่คุณไม่ต้องการ
Andrea Corbellini

ใช่ฉันแค่ลองใช้งานในเทอร์มินัลไม่ใช่สคริปต์เชลล์
zubozrout

2
ดังนั้นฉันอ่านคำถามก่อนหน้านี้ของคุณและดูเหมือนว่าคุณเข้าใจผิดบางอย่าง คุณมีความสับสนกระบวนการที่มีการโต้แย้งข้อที่ศูนย์ด้วยPIDกับปล่อยประ และคุณยังถามคำถามที่ผิดด้วย สิ่งที่คุณต้องการถามเป็นอันดับแรก: dash ตัวเชื่อมโยงตัวเรียกใช้กับกระบวนการทำงานอย่างไร เมื่อคุณพบคำตอบสำหรับคำถามนั้นแล้วคุณจะพบคำตอบสำหรับคำถามเดิมของคุณ
Andrea Corbellini
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.