问题
In bash, as in ruby, the program name is given by $0. What is it in fish? I can do the following if I have to:
set PROGRAM (ps --no-header -o args -p %self | egrep -o '\S+')[2]
But I'm sure the program name must be already available somewhere. I could also set the program name in variable at the stub of each program, but that has maintenance problems.
回答1:
To get the same result as your command, it is the script filename you are looking for.
This information is not stored in a variable, but you get this by querying status.
basename (status -f) # The name of the file
status -f # The full path of the file
More information: http://fishshell.com/docs/2.0/commands.html#status
回答2:
For fish use $_ for program name.
回答3:
fish 3.x
status current-command
See Deprecations section of the 3.0 documentation.
fish 2.x
Use $_ for program name.
See Programmable title section of the 2.0 documentation.
来源:https://stackoverflow.com/questions/16975804/how-to-get-the-program-name-in-a-fish-shell-script