diff --git a/betikler/addPath/.gitignore b/betikler/addPath/.gitignore new file mode 100644 index 0000000..b72d4b3 --- /dev/null +++ b/betikler/addPath/.gitignore @@ -0,0 +1,2 @@ +eklenecekPaths.txt +links diff --git a/betikler/addPath/README.md b/betikler/addPath/README.md new file mode 100644 index 0000000..3b21fa8 --- /dev/null +++ b/betikler/addPath/README.md @@ -0,0 +1,18 @@ +# grafikbilgi.sh + +Bu betik, yazılmış olan Kabuk-ShellScript deposu içerisindeki betiklerin direk olarak kabuk yardımıyla çalıştırılabilmeleri için onları PATH değişkenine ekler. + +## Açıklamalar + +Betiğin bulunduğu addPath klasörüne girip ```bash yolaEkle.sh``` komutunu çalıştırmanız yeterli. +Beklenmedik sonuç doğurabileceği için başka bir klasör içerisinden çalıştırılmamalıdır. + +**Not :** Betik kendini .basrc içerisine ekler, ancak herhangi bir güncellemeden sonra otomatik çalışma özelliğine sahip değildir. Depo güncellemesi veya el ile değişimden sonra tekrar çağırılması gerekebilir! + +## Nasıl Çalışır? + +1. Betik öncelikle betikler klasörü içerisindeki tüm altklasörleri bulur ve bunları betikler/addPath/links klasörü içerisine sembolik linklerle bağlar. +2. Tüm klasörler linklendiğinde, linklerin bulunduğu klasörü ~/.bashrc içerisine ekler. +3. Tüm klasörlerin altındaki her bir *.sh dosyası için çalıştırma izni verir. + + diff --git a/betikler/addPath/yolaEkle.sh b/betikler/addPath/yolaEkle.sh new file mode 100755 index 0000000..081e289 --- /dev/null +++ b/betikler/addPath/yolaEkle.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +#---------------------------------------------------- +# Özet: Yazılmış kabuk betiklerini kabuktan doğrudan +# çağırılabilsinler diye PATH değişkeni içerisine kalıcı +# olarak ekler. +# Yazar: Fatih Eser - @afeser +# Kaynak: https://forum.ubuntu-tr.net/... +#---------------------------------------------------- + +# Move to "betikler" folder +cd .. + +# Global Vars +betik_fol_loc=$(pwd) + +if [ ! -f $betik_fol_loc/addPath/yolaEkle.sh ]; then + echo "Bu betik, kendi klasörü içerisinden çağırıldığı varsayılarak yazıldı. Lütfen kendi klasörü içerisinden başlatın ve tekrar deneyin..." + exit 1 +fi + +# Remove old files +rm -rf $betik_fol_loc/addPath/links + +# Create new files +mkdir addPath/links &> /dev/null + +# Read "ls" output and create new links into directory links +listed_files=$(ls) + +echo "Yeni linkler oluşturuluyor..." +(IFS=' +' +for folder in $listed_files +do + ln -s $betik_fol_loc/$folder/*.sh $betik_fol_loc/addPath/links/ +done +) + +echo "~/.bashrc güncelleniyor..." +if grep -Fxq "PATH=\$PATH:$betik_fol_loc/addPath/links" ~/.bashrc +then + # No need to add again + echo "~/.bashrc zaten güncel!" +else + echo "# yolaEkle.sh tarafından ekleniyor" >> ~/.bashrc + echo "PATH=\$PATH:$betik_fol_loc/addPath/links" >> ~/.bashrc +fi + + +# Set permissions +echo "İzinler ayarlanıyor..." +(IFS=' +' +for folder in $listed_files +do + cd $folder + chmod +x *.sh + cd .. +done +) + +echo "Bitti!" +echo "Değişiklikleri kullanabilmek için yeni bir kabuk açmanız gerekebilir" +exit 0