Mengganti jalur ke biner untuk pengguna tertentu

8

Pertanyaan saya tampaknya sepele tetapi saya tidak berhasil menemukan sesuatu yang bermanfaat di internet. Saya memiliki biner di

/urs/bin/binary

tetapi sudah usang dan versi yang lebih baru tersedia di beberapa mount misalnya

/mount/new_version/binary

Ada skrip bash yang memanggil biner ini dalam bentuk seperti

binary -doSomething

Saya perlu skrip ini untuk menjalankan versi baru dari biner, bukan yang lama tapi saya tidak diizinkan untuk mengubah skrip ini. Apakah cara untuk menimpa jalur itu entah bagaimana hanya untuk pengguna saya? Bantuan apa pun akan dihargai.

Viktor Stolbin
sumber
Jika Anda tidak diizinkan melakukannya, bicarakan dengan admin Anda.
Sven

Jawaban:

11

Jika biner dalam /usr/bin/binarydan script memanggil biner tanpa menentukan path lengkap, melainkan bergantung pada /usr/binberada di PATHmaka Anda dapat menambahkan lokasi biner baru ke awal pengguna PATH. Masukkan sesuatu seperti ini di ~/.bashrc:

PATH=/mount/new_version:$PATH

Untuk alasan keamanan, skrip sering menentukan path lengkap ke binari untuk mencegah hal semacam ini.

Dijeda sampai pemberitahuan lebih lanjut.
sumber
3

Jika Anda memiliki akses ke biner, Anda dapat mencadangkannya dan membuat tautan simbolik.

mv /urs/bin/binary /urs/bin/binary.bkp
ln -s /mount/new_version/binary /urs/bin/binary

[EDIT]

Maaf, tidak melihat perubahan harus dilakukan untuk satu pengguna saja.

Anda dapat membuat fungsi untuk dipanggil, bukan biner.

Bergantung pada bagaimana Anda menjalankan biner (path lengkap atau hanya nama) Anda harus membuat fungsi yang sesuai , seperti:

# Full path
function /urs/bin/binary () { command /mount/new_version/binary "$@"; }
export -f /urs/bin/binary
# Name
function binary () { command /mount/new_version/binary "$@"; }
export -f binary

Jika biner tidak menerima / membutuhkan argumen, hapus "$ @" .

Untuk mengotomatisasi pembuatan fungsi, masukkan baris fungsi dalam file .profile di direktori home user.

Douglas P.
sumber
Ini akan memengaruhi semua pengguna. Itu tidak bisa diterima.
Viktor Stolbin
Maaf, saya mengoreksi jawabannya karena perubahan harus memengaruhi satu pengguna saja.
Douglas P.
3

alias commandname=/mount/new_version/binary

di .bashrc di atas pernyataan jalur / ekspor atau di profil akan menyelesaikan cukup mudah.

art3mis
sumber