Bash betiği çalıştırılırken “terminal işlem grubu ayarlanamıyor” hatası


14

Benim init.el dosyamda aşağıdaki iki kod satırı var:

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

Kabuk komut dosyası dmenu_path kullanarak yürütülebilir bir listesini almak için aşağıdaki komut dosyasını yürütmeye çalıştım.

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

Aşağıdaki hatayı görüyorum:

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

Kullanırken bash'ın bu hatayı döndürmesini nasıl önleyebilirim shell-command?


Stackoverflow.com/questions/9670209/… muhtemelen kısmi yinelenen soru Eğer kabuk cygwin's bash ise
julio

Yanıtlar:


11

-iBayrak talepleri Bash bir terminali gerektirir interaktif modunda çalıştırmayı unutmayın. Çözüm, shell-command-switchdeğişkeni varsayılan değerinde bırakmaktır -c.

Bash'i gerçekten etkileşimli modda çalıştırmanız gerekiyorsa, start-file-processile process-connection-typebağlı olarak kullanarak sözde terminalde çalıştırmanız gerekir t.


Bu benim için işe yaramadı.
Didier A.

Benim için çalışıyor. Örnek olarak, bu komut başlatılır gnome-terminal, çalışır echove Bash oturumunu çalışır durumda bırakır ve yeni komutlar almaya hazırdır (start-file-process-shell-command "peekaboo" "*Messages*" "gnome-terminal -- bash -c 'echo Peekaboo!; bash'"); Elisp komutundan herhangi bir çıktı *Messages*arabelleğe gönderilir . start-file-process-shell-commandBunun yerine kullandığımı unutmayın start-file-process, bu yüzden kabuk programlarına yol vermem gerekmiyor.
Arch Stanton

0

-iTakma adları genişletmek için bash'ı eklediniz mi ? Öyleyse, /programming/12224909 içinde verildiği gibi ,

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

.emacs ve

shopt -s expand_aliases

.bashrc. Birincisi, .bashrc'nizin alt kabuklarınızda çalıştırılmasına neden olur ve ikincisi, giriş yapmayan bash kabuklarında takma ad genişletmesine izin verir.

Takma adlarınızla ve shopt satırınızla ayrı bir kabuk komut dosyası oluşturarak ve bunu BASH_ENV değeri olarak kullanarak daha iyisini yapabilirsiniz; tam ~ / .bashrc'nizden daha hızlı çalışabilir.


Orada ayrıntılı düzeltmeyi özetleyebilir misiniz? Aksi takdirde, bu yalnızca bağlantıya verilen bir yanıttır ve bu nedenle risklerin silinmesi.
Drew
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.