Я отправляю команду printenv в командной строке, и я вижу, что одна из переменных следующая:
_=/usr/bin/printenv
Я теперь делаю это:
mo@mo-Toshiba ~/Workspace $ printenv _
/usr/bin/printenv
но при попытке назвать эхо на этой переменной я получаю следующее:
mo@mo-Toshiba ~/Workspace $ echo $_
_
Что дает? Почему эхо не рассматривает это как переменную? (т.е. как $PATH или $PWD)
Это переменная. Переменная оболочки _
обновляется оболочкой каждый раз, когда вы запускаете команду, содержащую последний аргумент предыдущей команды.
Это не очень полезно, но позволяет вам написать псевдоним или функцию для выполнения чего-либо над «тем же файлом (или другим объектом), что и последняя команда».
Переменная также добавляется в среду подпроцессов. Там он содержит имя команды, переданное в оболочке (до поиска PATH
).