Terminal komut istemini değiştirmek için bir bash betiği içindeki kaynak nasıl kullanılır?


0

Komut istemini hızlıca değiştirmek için ~ / .local / bin / ($ PATH'in bir parçası olan) komut dosyasını kullanabilmem gerekiyor.

Aşağıdakileri bir konsolda çalıştırarak istenen sonucu elde edebilirsiniz:

 echo PS1='$\ ' > /tmp/ps1 && source /tmp/ps1 && rm /tmp/ps1

Ancak, bir betiğe girildiğinde, içinde çalıştığı konsolu etkilemez.

. .local/bin/bigfont çalışır ancak komut dosyasının yolunu yazmaktan (veya komut dosyası adından başka bir şey yazmaktan) kaçınılmalıdır.

Bunu bir komut dosyası kullanarak yapmanın bir yolu var mı? Değilse, bu C kullanarak çözmek için basit bir yolu var mı?

Teşekkürler!


1
Öncelikle, bir ortam değişkenini değiştirmek için bir dosya yazmanız ve kaynak yapmanız gerekmez - PS1'i sadece yürüterek ayarlayabilirsiniz PS1='$\ '. Sen koyabilirsiniz PS1='$\ 'bir metinde ve bu kaynak. Alternatif olarak, kaynak koduna ihtiyaç duymayacak, ancak mevcut ortamda yürütülecek, komut dosyası yerine bir işlev kullanabilirsiniz, böylece PS1 gibi ortam değişkenlerini ayarlayabilirsiniz. Bunu bir kaynak kodda kaynak olmadan yapamazsınız, çünkü komut dosyası kabuğunuzun alt işlemi olarak çalışır ve alt işlemler ebeveynlerinin ortamını etkileyemez.
garyjohn

Yanıtlar:


0

Bir komut dosyası kullanıyormuşsunuz gibi görünmesini sağlayacak bir uzlaşma vardır.

Bir Bash işlevi yazın:

function miniprompt {
  PS1='$ '
  ~/.local/bin/somescript # or just somescript if it's in $PATH
}

İşlevin her zaman kullanılabilir olduğundan emin olmak için içine ~/.bashrcve ~/.bash_profile(veya sadece yine de ~/.bashrcyüklenirse ~/.bash_profile) koyun .

garyjohn, sorunun doğrudan sourcebelirlenebileceği ve kullanılması gereken yanlış bir varsayım içerdiğini açıkça ortaya koydu PS1='$ '. Teşekkürler!


0
function myprompt {
  export PS1=<set PS1 appropriately>
}

alias setprompt="PROMPT_COMMAND='myprompt'"

Setprompt komutunu çalıştırmanız komut isteminizi ayarlamalıdır.

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.