Mensimulasikan menjalankan "make install" - "dry run" atau utilitas simulator?

13

Apakah ada cara umum untuk menjalankan skrip bash dan melihat perintah yang dihasilkan, tetapi tidak benar-benar menjalankan perintah - yaitu semacam "dry run" / semacam simulator?

Saya memiliki skrip instalasi basis data (sebenarnya "make install" setelah menjalankan ./configure dan make) yang ingin saya jalankan, tetapi menginstal segala macam hal yang tidak saya inginkan.

Jadi saya ingin cara untuk melihat apa yang akan dilakukan sebelum saya menjalankannya - mungkin bahkan menjalankan perintah dengan tangan sebagai gantinya.

Apakah ada utilitas yang dapat melakukan tugas seperti itu (atau yang terkait / serupa)?

Vérace
sumber
Saya pikir 'set -n' melakukan sesuatu seperti itu. Coba tambahkan -x juga.
Jeff Schaller
Bagaimana cara mem-pipe "make install" ke -n?
Vérace
bash -n make install, tetapi dari man bash: "Shell interaktif dapat mengabaikan opsi ini."
pfnuesel
Tidak ada opsi dryrun di bash. Lihat juga di sini stackoverflow.com/questions/19115156/…
pfnuesel

Jawaban:

16

GNU make memiliki opsi untuk melakukan dry-run:

'-n'

'- cukup cetak'

'--jalankan-lari'

'--recon'

"Tidak-op". Penyebab membuat mencetak resep yang diperlukan untuk membuat target up to date, tetapi tidak benar-benar melaksanakannya. Perhatikan bahwa beberapa resep masih dijalankan, bahkan dengan bendera ini (lihat Bagaimana MAKE Variable Bekerja). Juga setiap resep yang diperlukan untuk memperbarui makefiles termasuk masih dijalankan.

Jadi untuk situasi Anda, jalankan saja make -n installuntuk melihat perintah yang makeakan dijalankan.

Jeff Schaller
sumber
5

Versi apa pun makememiliki -nopsi (lihat deskripsi POSIXmake ), tetapi shell tidak memiliki opsi yang sesuai (lihat misalnya Tampilkan perintah tanpa menjalankannya ).

Untuk memperparah situasi, jika Anda kebetulan menggunakan automake, ia menempel dalam skrip boilerplate besar (yang oleh pengembangnya disebut sebagai "aturan rekursif") yang mengalahkan kemampuan siapa pun untuk menggunakan "make -n" dan melihat apa yang akan terjadi.

Bacaan lebih lanjut:

Thomas Dickey
sumber