←back to thread

185 points thunderbong | 8 comments | | HN request time: 0.819s | source | bottom
1. fracus ◴[] No.43649037[source]
The shebang seems underbaked to me. There is no way to reference a user's home directory AFIK. I came across this annoyance when trying to make my python virtual environment portable.
replies(2): >>43649230 #>>43649303 #
2. AdieuToLogic ◴[] No.43649230[source]
> The shebang seems underbaked to me. There is no way to reference a user's home directory AFIK. I came across this annoyance when trying to make my python virtual environment portable.

You can use env[0] to invoke a command based on `$PATH` if desired:

  The env utility uses the PATH environment variable to 
  locate the requested utility if the name contains no `/' 
  characters, unless the -P option has been specified.
For shells which have limited shebang functionality[1], specifying the POSIX shell location and then using its builtin `exec` support can suffice.

0 - https://man.freebsd.org/cgi/man.cgi?query=env&apropos=0&sekt...

1 - http://www.acadix.biz/Unix-guide/HTML/ch02s20.html

replies(1): >>43649324 #
3. fsckboy ◴[] No.43649303[source]
i don't get it.

you need to know where the script is to read the shebang... if it's in the user's home directory, you are already there or you either found it on the path or typed it in... then with bash, tilde's everywhere else you need them?

replies(3): >>43649340 #>>43650470 #>>43656920 #
4. ◴[] No.43649324[source]
5. ◴[] No.43649340[source]
6. ◴[] No.43650470[source]
7. fracus ◴[] No.43656920[source]
I don't want my user's home directory in the script and therefore, the shebang, for portability reasons. The best solution would to be able to refer to the location of the virtual environment in the shebang relative to the location of the script instead of the current working directory.
replies(1): >>43657734 #
8. fsckboy ◴[] No.43657734{3}[source]
user's home directory is in /etc/passwd and in $HOME in env. the way it's done is, you refer to these