1
我想運行shell腳本,其中exe1
改爲查找爲/path/to/exe1
而不是引用我在/path/to/exe2
中看到的exe2
。理想情況下,我想以最緊湊的方式做到這一點,副作用最小。在bash中重命名單個腳本的可執行文件
爲了使這個例子具體,有點類似於我真正關心的問題,我有一個shell腳本script.sh
其中
$ cat script.sh
#!/usr/bin/env bash
python --version
我對我目前的PATH
兩個可執行文件:
$ python --version
Python 2.7.x
$ python3 --version
Python 3.5.x
我想以這樣的方式撥打script.sh
:
$ <magic> ./script.sh
Python 3.5.x
$ python --version
Python 2.7.x
我能找到到目前爲止,最好的辦法是
$ mkdir /tmp/python3 && ln -s $(which python3) /tmp/python3/python && env PATH="/tmp/python3:$PATH" ./script.sh
這可以通過使用mktemp -d
和清理做出更好一點,但它仍然需要編寫大多是不必要的文件,東西好像我應該只是能夠告訴bash,將python視爲python3。像別名一樣是理想的,但它們不會被傳遞到子殼體上。有沒有一個明顯的工具我錯過了,或者我堅持使用這種方法的變種?
所以你想運行這個腳本,並且根據你在腳本之外做的事情,能夠讓它訪問那個時候你想要的任何版本的python?也就是說,「今天我需要Python 3,所以doas3 ./script.sh」?使用參數運行腳本並確定要運行的內容是否可以接受?也就是「./script.sh -p 3」,然後腳本就會說「if -p 3,use python3,else python2」? –