{"id":33494,"date":"2019-10-31T21:52:52","date_gmt":"2019-10-31T18:52:52","guid":{"rendered":"https:\/\/prohoster.info\/blog\/sem-neozhidannyh-peremennyh-bash\/"},"modified":"2019-10-31T21:52:52","modified_gmt":"2019-10-31T18:52:52","slug":"sem-neozhidannyh-peremennyh-bash","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/sem-neozhidannyh-peremennyh-bash","title":{"rendered":"Sept variables Bash inattendues","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>En poursuivant la s\u00e9rie d'annotations sur <noindex><a rel=\"nofollow\" href=\"https:\/\/zwischenzugs.com\/2019\/04\/03\/eight-obscure-bash-options-you-might-want-to-know-about\/\">des fonctionnalit\u00e9s moins connues<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/zwischenzugs.com\/2019\/02\/27\/bash-startup-explained\/\">de bash, je vais vous montrer sept variables que vous ne connaissiez peut-\u00eatre pas.<\/a><\/noindex> PROMPT_COMMAND<\/p>\n<h4>1) <code>Vous \u00eates peut-\u00eatre d\u00e9j\u00e0 au courant de la fa\u00e7on de manipuler l'invite prompt pour afficher diverses informations utiles, mais peu de gens savent que chaque fois que l'invite est affich\u00e9e, une commande de shell peut \u00eatre ex\u00e9cut\u00e9e.<\/code><\/h4>\n<p>\nEn fait, de nombreux manipulateurs d'invite complexes utilisent cette variable pour ex\u00e9cuter des commandes qui collectent des informations affich\u00e9es dans l'invite.<\/p>\n<p>Essayez d'ex\u00e9cuter ceci dans un nouveau shell et voyez ce qui se passe avec la session :<\/p>\n<p>$ PROMPT_COMMAND='echo -n \"writing the prompt at \" &amp;&amp; date'<\/p>\n<pre><code class=\"bash\">HISTTIMEFORMAT<\/code><\/pre>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>2) <code>dans le terminal, vous obtiendrez une liste des commandes pr\u00e9c\u00e9demment ex\u00e9cut\u00e9es sous votre compte.<\/code><\/h4>\n<p>\nSi l'on ex\u00e9cute <code>history<\/code> $ HISTTIMEFORMAT='I ran this at: %d\/%m\/%y %T '<\/p>\n<pre><code class=\"bash\">Une fois que cette variable est d\u00e9finie, les nouvelles entr\u00e9es enregistrent l'heure avec la commande, donc la sortie ressemblera \u00e0 ceci :<\/code><\/pre>\n<p>\n1871  I ran this at: 01\/05\/19 13:38:07 cat \/etc\/resolv.conf\n1872  I ran this at: 01\/05\/19 13:38:19 curl bbc.co.uk\n1873  I ran this at: 01\/05\/19 13:38:41 sudo vi \/etc\/resolv.conf\n1874  I ran this at: 01\/05\/19 13:39:18 curl -vvv bbc.co.uk\n1876  I ran this at: 01\/05\/19 13:39:25 sudo su -<\/p>\n<pre>Le formatage correspond aux symboles de<\/pre>\n<p>\nman date <code>CDPATH<\/code>.<\/p>\n<h4>3) <code>Pour gagner du temps dans l'invite de commande, vous pouvez utiliser cette variable pour changer de r\u00e9pertoire aussi facilement que vous ex\u00e9cutez des commandes.<\/code><\/h4>\n<p>\n, la variable<\/p>\n<p>Comme l'ann\u00e9e <code>PATH<\/code>est une liste de chemins, s\u00e9par\u00e9s par des deux-points. Lorsque vous ex\u00e9cutez une commande <code>Pour gagner du temps dans l'invite de commande, vous pouvez utiliser cette variable pour changer de r\u00e9pertoire aussi facilement que vous ex\u00e9cutez des commandes.<\/code> avec un chemin relatif (c'est-\u00e0-dire sans barre oblique au d\u00e9but), par d\u00e9faut, le shell cherche dans votre dossier local les noms correspondants. <code>cd<\/code> cherchera dans les chemins que vous avez sp\u00e9cifi\u00e9s pour le r\u00e9pertoire dans lequel vous souhaitez aller. <code>Pour gagner du temps dans l'invite de commande, vous pouvez utiliser cette variable pour changer de r\u00e9pertoire aussi facilement que vous ex\u00e9cutez des commandes.<\/code> Si vous d\u00e9finissez<\/p>\n<p>comme ceci : <code>Pour gagner du temps dans l'invite de commande, vous pouvez utiliser cette variable pour changer de r\u00e9pertoire aussi facilement que vous ex\u00e9cutez des commandes.<\/code> $ CDPATH=\/:\/lib<\/p>\n<pre><code class=\"bash\">et ensuite entrez :<\/code><\/pre>\n<p>\n$ cd \/home\n$ cd tmp<\/p>\n<pre><code class=\"bash\">vous arriverez toujours \u00e0<\/code><\/pre>\n<p>\npeu importe o\u00f9 vous \u00eates. <code>\/tmp<\/code> Cependant, faites attention, car si vous n'incluez pas le dossier local (<\/p>\n<p>) dans la liste, vous ne pourrez pas cr\u00e9er un autre dossier<code>.<\/code>tmp <code>et y acc\u00e9der comme d'habitude :<\/code> $ cd \/home\n$ mkdir tmp\n$ cd tmp\n$ pwd\n\/tmp<\/p>\n<pre><code class=\"bash\">Oops !<\/code><\/pre>\n<p>\nC'est un peu d\u00e9routant, ce que j'ai ressenti quand j'ai r\u00e9alis\u00e9 que le dossier local n'avait pas \u00e9t\u00e9 inclus dans la variable plus famili\u00e8re<\/p>\n<p>\u2026 mais vous devez le faire dans la variable PATH, car vous pourriez \u00eatre tromp\u00e9 en ex\u00e9cutant une commande factice depuis un code t\u00e9l\u00e9charg\u00e9. <code>PATH<\/code>Le mien est d\u00e9fini comme point de d\u00e9part :<\/p>\n<p>CDPATH=.:\/space:\/etc:\/var\/lib:\/usr\/share:\/opt<\/p>\n<pre><code class=\"bash\">SHLVL<\/code><\/pre>\n<p><\/p>\n<h4>4) <code>Vous \u00eates-vous d\u00e9j\u00e0 demand\u00e9, en entrant<\/code><\/h4>\n<p>\nAvez-vous d\u00e9j\u00e0 pens\u00e9 \u00e0 introduire <code>exit<\/code> vous sortira de l'environnement bash actuel dans un autre 'parent' shell ou fermera simplement compl\u00e8tement la fen\u00eatre de console ?<\/p>\n<p>Cette variable suit \u00e0 quel point vous \u00eates en profondeur dans l'environnement bash. Si vous cr\u00e9ez un nouveau terminal, elle est d\u00e9finie \u00e0 1 :<\/p>\n<pre><code class=\"bash\">$ echo $SHLVL\n1<\/code><\/pre>\n<p>\nEnsuite, si vous lancez un autre processus shell, le nombre augmente :<\/p>\n<pre><code class=\"bash\">$ bash\n$ echo $SHLVL\n2<\/code><\/pre>\n<p>\nCeci peut \u00eatre tr\u00e8s utile dans les scripts, lorsque vous n'\u00eates pas s\u00fbr s'il faut sortir ou non, ou pour suivre o\u00f9 vous vous trouvez par niveau d'imbrication.<\/p>\n<h4>5) <code>LINENO<\/code><\/h4>\n<p>\nLa variable <code>LINENO<\/code>est \u00e9galement utile pour analyser l'\u00e9tat actuel et le d\u00e9bogage, car elle indique le nombre de commandes ex\u00e9cut\u00e9es dans la session jusqu'\u00e0 pr\u00e9sent :<\/p>\n<pre><code class=\"bash\">$ bash\n$ echo $LINENO\n1\n$ echo $LINENO\n2<\/code><\/pre>\n<p>\nCeci est le plus souvent utilis\u00e9 lors du d\u00e9bogage de scripts. En ins\u00e9rant des lignes telles que <code>echo DEBUG:$LINENO<\/code>, vous pouvez rapidement d\u00e9terminer o\u00f9 vous en \u00eates dans le script (ou non).<\/p>\n<h4>6) <code>REPLY<\/code><\/h4>\n<p>\nSi, comme moi, vous \u00e9crivez g\u00e9n\u00e9ralement ce type de code :<\/p>\n<pre><code class=\"bash\">$ read input\necho do something with $input<\/code><\/pre>\n<p>\nalors cela peut \u00eatre une surprise qu'il n'est pas n\u00e9cessaire de s'inqui\u00e9ter de cr\u00e9er une variable :<\/p>\n<pre><code class=\"bash\">$ read\necho do something with $REPLY<\/code><\/pre>\n<p>\nCela fait la m\u00eame chose.<\/p>\n<h4>7) <code>TMOUT<\/code><\/h4>\n<p>\nPour ne pas rester trop longtemps sur les serveurs de production pour des raisons de s\u00e9curit\u00e9 ou ne pas ex\u00e9cuter accidentellement quelque chose de dangereux dans le mauvais terminal, d\u00e9finir cette variable agit comme une protection.<\/p>\n<p>Si rien n'est saisi pendant le nombre de secondes d\u00e9fini, la session shell se termine.<\/p>\n<p>C'est-\u00e0-dire que c'est une alternative \u00e0 <code>sleep 1 &amp;&amp; exit<\/code>:<\/p>\n<pre><code class=\"bash\">$ TMOUT=1<\/code><\/pre>\n<p>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/451492\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044f \u0441\u0435\u0440\u0438\u044e \u0437\u0430\u043c\u0435\u0442\u043e\u043a \u043e \u043c\u0435\u043d\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 bash, \u043f\u043e\u043a\u0430\u0436\u0443 \u0432\u0430\u043c \u0441\u0435\u043c\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u043d\u0435 \u0437\u043d\u0430\u0442\u044c. 1) PROMPT_COMMAND \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u0443\u0436\u0435 \u0432 \u043a\u0443\u0440\u0441\u0435, \u043a\u0430\u043a \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435\u043c prompt, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u0443\u044e \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u043d\u043e \u043d\u0435 \u0432\u0441\u0435 \u0437\u043d\u0430\u044e\u0442, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438 \u043f\u043e\u043a\u0430\u0437\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0438. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0442\u043e\u0440\u044b prompt [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-33494","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044f \u0441\u0435\u0440\u0438\u044e \u0437\u0430\u043c\u0435\u0442\u043e\u043a \u043e \u043c\u0435\u043d\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/sem-neozhidannyh-peremennyh-bash\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0435\u043c\u044c \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 Bash | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044f \u0441\u0435\u0440\u0438\u044e \u0437\u0430\u043c\u0435\u0442\u043e\u043a \u043e \u043c\u0435\u043d\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/sem-neozhidannyh-peremennyh-bash\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:52:52+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:52:52+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Sept variables Bash inattendues | ProHoster","description":"En continuant la s\u00e9rie de notes sur les variables moins connues","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/sem-neozhidannyh-peremennyh-bash","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0435\u043c\u044c \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 Bash | ProHoster","og:description":"\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044f \u0441\u0435\u0440\u0438\u044e \u0437\u0430\u043c\u0435\u0442\u043e\u043a \u043e \u043c\u0435\u043d\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/sem-neozhidannyh-peremennyh-bash","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:52:52+00:00","article:modified_time":"2019-10-31T18:52:52+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33494","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 15:30:22","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:39:23","updated":"2026-01-21 15:30:22","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/33494","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=33494"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/33494\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=33494"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=33494"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=33494"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}