ข้อผิดพลาด“ ไม่สามารถตั้งค่ากลุ่มกระบวนการเทอร์มินัล” เมื่อเรียกใช้สคริปต์ทุบตี


13

ฉันมีโค้ดสองบรรทัดต่อไปนี้ในไฟล์ init.el ของฉัน:

(setq shell-file-name "bash")
(setq shell-command-switch "-ic")

ฉันพยายามเรียกใช้สคริปต์ต่อไปนี้เพื่อรับรายการไฟล์เรียกใช้งานโดยใช้เชลล์สคริปต์ dmenu_path

(defun dmenu-path-out ()
  (shell-command-to-string "dmenu_path"))

ฉันเห็นข้อผิดพลาดต่อไปนี้:

bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
[
0ad
...

ฉันจะป้องกัน bash ไม่ให้ส่งกลับข้อผิดพลาดนั้นเมื่อใช้งานได้shell-commandอย่างไร


คำถามที่ซ้ำกันบางส่วนอาจเป็นไปได้ของstackoverflow.com/questions/9670209/...ดูเหมือนว่าจะมีวิธีการแก้ปัญหาไม่มี แต่ถ้าเปลือกของคุณจะ cygwin ทุบตี
julio

คำตอบ:


10

การ-iร้องขอการตั้งค่าสถานะที่ Bash รันในโหมดโต้ตอบซึ่งต้องใช้เทอร์มินัล การแก้ปัญหาคือจะออกจากตัวแปรที่ค่าเริ่มต้นซึ่งเป็นเพียงshell-command-switch-c

ถ้าคุณต้องการจริงๆที่จะเรียกใช้ทุบตีในโหมดโต้ตอบคุณจะต้องทำงานในหลอกขั้วโดยใช้start-file-processกับผูกไว้กับprocess-connection-typet


สิ่งนี้ไม่ได้ผลสำหรับฉัน
Didier A.

มันใช้งานได้สำหรับฉัน ตัวอย่างเช่นคำสั่งนี้เปิดตัวgnome-terminalวิ่งechoและใบเซสชั่นทุบตีทำงานและพร้อมที่จะใช้คำสั่งใหม่: (start-file-process-shell-command "peekaboo" "*Messages*" "gnome-terminal -- bash -c 'echo Peekaboo!; bash'"); เอาต์พุตใด ๆ จากคำสั่ง Elisp จะถูกส่งไปยัง*Messages*บัฟเฟอร์ โปรดทราบว่าฉันใช้start-file-process-shell-commandแทนstart-file-processดังนั้นฉันไม่จำเป็นต้องให้เส้นทางไปยังโปรแกรมเชลล์
Arch Stanton

0

คุณเพิ่ม-iเพื่อรับทุบตีเพื่อขยายนามแฝง? ถ้าเป็นเช่นนั้นจะได้รับใน /programming/12224909ให้รวม

(setenv "BASH_ENV" "~/.bashrc")

ใน. emacs และของคุณ

shopt -s expand_aliases

ใน. bashrc ของคุณ อดีตทำให้. bashrc ของคุณทำงานบน sub-shells ของคุณและส่วนหลังอนุญาตให้ขยาย alias ใน shell bash ที่ไม่ใช่การเข้าสู่ระบบ

คุณสามารถไปได้ดีกว่าโดยการสร้างเชลล์สคริปต์แยกด้วยสมนามและบรรทัด shopt และใช้สิ่งนั้นเป็นค่า BASH_ENV ที่อาจทำงานได้เร็วกว่า ~ / .bashrc แบบเต็มของคุณ


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