Bagaimana cara memeriksa perintah apa yang diambil?

9

Aku punya script shell yang disebut foo.shdi /usr/local/sbin. Selain itu saya menggunakan skrip lain dengan nama yang sama. Itu disimpan di /home/user/scripts.

Kedua jalur milik PATH. Bagaimana saya bisa tahu, skrip mana yang dieksekusi ketika mengetik foo.shpada baris perintah? Bisakah saya mempengaruhinya?

batal
sumber

Jawaban:

10

Beberapa hari yang lalu saya puas dengan jawaban saya. Saya juga tahu bahwa whichperintah itu tidak digunakan untuk menguji apakah ada perintah. Sekarang saya tidak begitu puas dengan jawaban saya, dan saya merujuk pada tanggapan yang luar biasa ini .


Dengan whichperintah sederhana :

which foo.sh

Atau typeperintah:

type foo.sh

Dan Anda dapat memengaruhi ini dengan urutan jalur di Anda $PATHatau melalui jalur absolut saat skrip dimulai, EG

/home/user/scripts/foo.sh

Contoh

Jika PATH didefinisikan seperti di bawah ini

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Dan Anda memulai skrip atau sesuatu yang lain yang masuk /usr/local/bindan masuk /usr/bin, skrip /usr/local/binsebagai prioritas yang lebih tinggi.

AB
sumber
1
Omong-omong bashdan zshada juga typebuilt-in; sebaliknya di zsh which, berbeda dari bash, adalah built-in (dan tidak /usr/bin/which)
kos
@muru terima kasih. Sedikit saya sudah tahu tentang itu, tetapi tidak dalam detail seperti itu. Saya telah menambahkan pandangan saya ke jawaban saya. Terima kasih lagi.
AB