alias vs ekspor untuk perintah sederhana

33

Untuk perintah sederhana seperti less, apakah lebih baik membuat alias atau mengekspor opsi? Apakah ada manfaat satu di atas yang lain?

Misalnya, jika saya ingin lessselalu menggunakan -Ropsi untuk menampilkan karakter mentah, kedua solusi ini berfungsi:

  1. export LESS='-R'
  2. alias less='less -R'

Untuk kasus sederhana seperti ini, apakah ada manfaat satu di atas yang lain? Adakah skenario di mana satu akan menyebabkan masalah dan yang lainnya tidak?

Saya sudah membaca melalui beberapa infodan manhalaman, serta Googling itu, tapi aku masih terjebak pada ini.

skittleys
sumber
1
Tidak, itu memang karena preferensi pribadi. Saya memilih untuk menutup ini karena tampaknya lebih berdasarkan opini.
slm
Tiga solusi lagi: buat fungsi shell (hanya berfungsi di shell tetapi tidak harus interaktif); buat skrip di ~ / bin atau di mana saja (memiliki overhead startup shell tetapi bekerja segera dalam menjalankan shell dan dari program lain, dan tetap ada); file konfigurasi khusus program (untuk lessAnda dapat melakukannya menggunakan lesskey)
deltab
3
@ msl Ini bukan berdasarkan opini, atau setidaknya tidak dimaksudkan. Seseorang dapat membutuhkan lebih banyak overhead, dan tidak perlu menggunakan sumber daya, terutama dalam skenario yang lebih kompleks. Seseorang dapat lebih konvensional di dunia * nix, atau mungkin bahkan ada standar formal di suatu tempat. Pemrogram merasa kesal dengan "kode ceroboh" sepanjang waktu, bahkan ketika untuk semua maksud dan tujuan itu mencapai tujuan yang sama.
skittleys

Jawaban:

30

Salah satu perbedaan antara keduanya adalah bahwa alias hanya fitur shell. Variabel lingkungan diwarisi oleh semua subproses (kecuali jika sengaja dibersihkan).

Variabel lingkungan akan lebih mungkin untuk bekerja bahkan jika lessdiluncurkan secara tidak langsung, seperti melalui shell lain (misalnya tcsh), man, vim, psql, dll

200_sukses
sumber
3
Khususnya, alias hanya berfungsi di shell interaktif : Anda tidak dapat menggunakannya dalam skrip shell, yang kadang-kadang mungkin Anda inginkan. bash -c 'alias ll="ls -l"; ll'tidak akan menggunakan alias.
deltab
ah, saya tidak tahu itu! Jadi jika saya miliki export LESS='-R'di .zshrc saya, buka sesi zsh, dan kemudian beralih ke bash di sesi yang sama (tanpa ekspor di .bashrc), variabel lingkungan masih akan diatur? Saya akan berpikir keduanya akan hilang ....
skittleys
@deltab ah, ya, saya tahu tentang perbedaan itu, terima kasih untuk masalah pewarnaan grep. terimakasih telah menunjukkan itu.
skittleys
1

Ini sangat tergantung pada alat yang Anda gunakan. Akan ada alat yang memungkinkan Anda untuk menggunakan salah satu, yang lain hanya mengizinkan satu.

Ada perintah yang dipanggil oleh orang lain dan membaca variabel lingkungan dan menerima switch yang sama, tetapi menambahkan masing-masing switch yang sama itu merepotkan, seperti kompiler seperti make, di sini variabel lingkungan bersinar. Anda mengatur variabel dan melupakannya. Ini juga merupakan nilai tambah yang bisa temporal dan bekerja untuk satu perintah.

Intinya, adalah bahan preferensi dan tindakan terbaik untuk tugas tersebut, akan ada saat-saat di mana menyiapkan alias lebih mudah dan permanen daripada variabel lingkungan dan waktu lain di mana Anda memerlukan berbagai alat berperilaku dengan cara yang sama di mana Anda ingin variabel cinta lingkungan.

Braiam
sumber